【Linux系统编程】编辑器vim
- [1. vim的基本概念](#1. vim的基本概念)
- [2. 三种模式如何互相切换](#2. 三种模式如何互相切换)
- [3. vim基本操作与常用命令](#3. vim基本操作与常用命令)
- [4. vim的简单配置](#4. vim的简单配置)
1. vim的基本概念
vim是一个多模式编辑器,其主要包含三种基本模式。
- 命令模式(Command Mode)
当用户使用vim打开文件时,首先进入的就是命令模式。在此模式下,所敲的按键编译器都理解为命令,以命令驱动执行不同的功能。此模式下不能自由进行文本编辑,但可以执行复制、删除、粘贴等操作。- 编辑模式(Insert Mode)
编辑模式也称作插入模式,此模式下用户可以对文本内容进行自由编辑。进入次模式后,用户可以输入任何字符,这些字符都会被当作文本内容插入到文件中。- 底行模式(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的简单配置
- 建议:不要在root用户中配置。
- 在当前用户的家目录下创建一个.vimrc的文件。
- 用vim打开.vimrc文件,在其中写入我们所需要的配置即可,写入完成进入底行模式wq保存退出即可。
配置指令直接用DeepSeek等去搜即可

这里我就随便写几个验证一下。
syntax on 开启语法高亮
set nu 显示绝对行号
set tabstop=4 设置 Tab 键在屏幕上显示的宽度为 4 个空格
set shiftwidth=4 设置自动缩进(如 >>)的宽度为 4 个空格
set cursorline 高亮显示当前行
set softtabstop=4 使得在按退格键时可以一次删除 4 个空格
我们能看到 高亮显示当前行 还是很明显的。
