【Linux系统编程】编辑器vim

【Linux系统编程】编辑器vim

  • [1. vim的基本概念](#1. vim的基本概念)
  • [2. 三种模式如何互相切换](#2. 三种模式如何互相切换)
  • [3. vim基本操作与常用命令](#3. vim基本操作与常用命令)
  • [4. vim的简单配置](#4. vim的简单配置)

1. vim的基本概念

vim是一个多模式编辑器,其主要包含三种基本模式。

  1. 命令模式(Command Mode)
    当用户使用vim打开文件时,首先进入的就是命令模式。在此模式下,所敲的按键编译器都理解为命令,以命令驱动执行不同的功能。此模式下不能自由进行文本编辑,但可以执行复制、删除、粘贴等操作。
  2. 编辑模式(Insert Mode)
    编辑模式也称作插入模式,此模式下用户可以对文本内容进行自由编辑。进入次模式后,用户可以输入任何字符,这些字符都会被当作文本内容插入到文件中。
  3. 底行模式(Last Line Mode)
    以":"开始,通常用于文件的保存、退出等操作。在此模式下可以执行更复杂的命令,如查找替换、行跳转等。

2. 三种模式如何互相切换

首先我们通过vim打开文件的时候默认处于命令模式,下面介绍如何切换。

  • 命令模式 -> 编辑模式:按下 i 键(在光标前插入)。其他常用按键按包括a(在光标后插入)、o(在当前行下方新建一行并插入)。
  • 编辑模式 -> 命令模式:按下 Esc 键。
  • 命令模式 -> 底行模式:按下 Shift + ; ,也就是输入英文的冒号 : 。
  • 底行模式 -> 命令模式:按下 Esc 键。

注意:编辑模式和底行模式之间不能直接切换,必须通过命令模式作为"桥梁"进行中转。

3. vim基本操作与常用命令

通过上面三种模式的互相转换,我们已经可以在vim中编写C程序了,下面我们以该C程序为例,学习vim的基本操作和常用命令。

该代码是通过切换到编辑模式敲出来的。

1. set nu、set nonu 显式行号、不显示行号

先进入底行模式

set nonu 不再演示。

2. gg 将光标定位到文本开始

先进入命令模式

3. shift + g 讲光标定位到文本末端


4. n + shift + g / n + gg 将光标定位到第n行

3 shift g / 3 gg

5. shift + 4 将光标定位到该行末尾

6. shift + 6 将光标定位到该行开头

7. w 将光标按照单词向后进行行内或跨行移动,n + w 表示每次向后移动n个单词

8. b 将光标按照单词向前进行行内或跨行移动,n + w 表示每次向前移动n个单词

9. h、j、k、l 分别表示让光标向左、下、上、右移动,因为原来键盘上是没有上下左右键的,光标也可以通过上下左右移动,但是建议用h、j、k、l

这个就不再演示了。

10. yy 复制光标所在行,n + yy 表示从当前行开始要复制n行

这里我们让光标在第5行,n=1,进行复制,通过下一个粘贴指令去展示。

11. p 将复制的内容从光标所在行的下一行粘贴,n + p 表示要粘贴n次

这里我们让n=3,进行粘贴。

12. dd剪切,剪切光标所咋行,n + dd 表示从当前行开始要剪切n行

这里我们让n=3,进行剪切。

13. u 撤销前一次命令操作

14. ctrl + r 撤销之前撤销的命令操作

**15. shift + ` 就是Esc下面的那个字符,表示单个字符大小写转换,前面+n,就是从光标位置开始向后转换n个字符 **

这里n=1

16. n + r 将从光标位置开始向后n个字符全部替换成下一次输入的字符

这里n=3,输入c

17. shift + r 将模式从命令模式转换为替换模式,输入字符替换光标位置的字符,按Esc键可以回到命令模式

这里输入 abc

18. n + x 从光标所在位置开始向后删除n个字符,只会删除当前行

先回到命令模式

回到命令模式后,光标会自动向前走一格,所以会把c字符也删掉,这里n=20


19. ctrl + v 从命令模式进入到视图模式,可以解决多行注释和取消注释、多行写入等问题

多行注释

ctrl + v进入视图模式,然后通过h/j/k/l选中多行多列,按ctrl + i,然后插入注释符号//,再连按两次Esc即可注释多行,多行写入也是这个步骤,只不过是把//换成你要写的内容。

多行取消注释

ctrl + v进入视图模式,然后通过h/j/k/l选中多行多列,然后按d即可。

20. /要找的内容,在文本中查找并标记,输入n,跳转到下一个

21. vs 文件名 在底行模式可以多文件分屏操作,例如一个code.h头文件和一个code.c源文件,共同编写

ctrl + ww 可以让光标在多个文件中跳转,光标在哪一个文件就对哪一个文件进行操作

总结:

差不多就这些操作,但是还有一些操作我们没讲到,大家可以自行了解。

4. vim的简单配置

  1. 建议:不要在root用户中配置。
  2. 在当前用户的家目录下创建一个.vimrc的文件。
  3. 用vim打开.vimrc文件,在其中写入我们所需要的配置即可,写入完成进入底行模式wq保存退出即可。

配置指令直接用DeepSeek等去搜即可

这里我就随便写几个验证一下。

syntax on 开启语法高亮

set nu 显示绝对行号

set tabstop=4 设置 Tab 键在屏幕上显示的宽度为 4 个空格

set shiftwidth=4 设置自动缩进(如 >>)的宽度为 4 个空格

set cursorline 高亮显示当前行

set softtabstop=4 使得在按退格键时可以一次删除 4 个空格

我们能看到 高亮显示当前行 还是很明显的。

相关推荐
Ronin3053 小时前
【Linux网络】定制协议
linux·网络·协议·序列化和反序列化·定制协议·tcp网络通信
十五年专注C++开发4 小时前
Drogon: 一个开源的C++高性能Web框架
linux·c++·windows·后端开发·服务器开发
搬砖的小码农_Sky5 小时前
如何从Windows 操作系统登录Linux(Ubuntu)操作系统
linux·windows·ubuntu·远程工作
搬砖的小码农_Sky5 小时前
如何在Linux(Ubuntu)操作系统上查看文件的MD5,SHA256等校验码
linux·运维·ubuntu
码住懒羊羊5 小时前
【Linux】操作系统&进程概念
java·linux·redis
Wang's Blog6 小时前
Linux小课堂: 基于 SSH 的安全文件传输与增量同步机制深度解析之从 wget 到 rsync 的全流程实战
linux·ssh·1024程序员节
yy7634966687 小时前
WPF 之 简单高效的Revit多语言支持方案
java·大数据·linux·服务器·wpf
Heavy sea11 小时前
Linux串口应用编程
linux·c语言·1024程序员节
Justin_1911 小时前
Galera Cluster部署
linux·服务器·nginx