一、Vim 是什么?
Vim 是 Linux 环境中常用的文本编辑器。在学习 Linux 开发工具时,我们经常需要通过终端修改代码、配置文件或普通文本文件,因此掌握 Vim 的基本操作十分重要。
Vim 的一个特点是:不同模式下,同一个按键可能有不同的作用。 所以,学习 Vim 时,首先要弄清楚它的模式切换,再学习各个模式下的具体命令。
二、Vim 的基本操作
1. 进入 Vim
在终端中输入以下命令:
bash
vim test.c
这条命令表示使用 Vim 打开 test.c 文件。如果文件已经存在,就打开该文件;如果文件不存在,Vim 可以创建一个新的编辑缓冲区,之后保存时再写入文件。
需要特别注意:进入 Vim 后,默认处于正常模式,而不是插入模式。 如果要直接输入文字,需要先切换到插入模式。

2. Vim 的三种基本模式
本节课主要介绍三种模式:
- 正常模式(Normal Mode):主要用于移动光标、删除、复制、替换和撤销等操作。
- 插入模式(Insert Mode):主要用于输入文本。
- 末行模式(Last Line Mode):通过输入命令完成保存、退出、查找等操作。

三种模式之间的切换关系如下:
| 当前模式 | 按键 | 切换结果 |
|---|---|---|
| 正常模式 | i |
插入模式 |
| 正常模式 | a |
插入模式 |
| 正常模式 | o |
插入模式 |
| 插入模式 | Esc |
正常模式 |
| 正常模式 | : |
末行模式 |
其中,: 通常通过 Shift + ; 输入。
3. 插入模式的区别
从正常模式进入插入模式,常用以下三个按键。
i:从当前光标所在位置开始输入。a:从当前光标所在位置的下一个位置开始输入。o:在当前行下方新建一行,并从新行的行首开始输入。
这三个按键都能进入插入模式,但开始输入的位置不同。
例如,我们已经打开一个文本文件,想在当前光标处修改文字,可以使用 i;如果想从当前字符后面继续输入,可以使用 a;如果想增加一行内容,可以使用 o。
在插入模式下,如果需要执行正常模式中的操作,可以先按 Esc 返回正常模式。
4. 保存与退出
在正常模式下输入 :,进入末行模式,然后执行相应命令。
| 命令 | 作用 |
|---|---|
:w |
保存当前文件 |
:wq |
保存文件并退出 Vim |
:q! |
不保存修改,强制退出 Vim |
注意,w 表示写入保存,q 表示退出,! 在这里表示强制执行。
如果修改了文件并且希望保留修改,可以使用 :wq;如果不希望保留本次修改,可以使用 :q!。
【课件配图:第 12 页,Vim 保存与退出命令】
三、Vim 正常模式命令集
正常模式是 Vim 中进行文本操作的重要模式。本节课介绍的操作主要包括光标移动、删除、复制、替换、撤销和跳转指定行。
1. 移动光标
Vim 可以使用键盘上的方向键移动光标,也可以使用以下字母按键。
| 按键 | 作用 |
|---|---|
h |
向左移动一格 |
j |
向下移动一格 |
k |
向上移动一格 |
l |
向右移动一格 |
G |
移动到文章末尾 |
$ |
移动到当前行行尾 |
^ |
移动到当前行行首 |
w |
移动到下一个单词的开头 |
e |
移动到下一个单词的末尾 |
b |
移动到上一个单词的开头 |
gg |
移动到文件开头 |
Shift + g |
移动到文件末尾 |
5l |
向右移动五格 |
15G |
移动到第 15 行 |
其中,h、j、k、l 分别对应左、下、上、右。掌握这些按键后,即使不使用方向键,也可以完成常见的光标移动。
2. 翻页操作
当文件内容比较多时,可以使用快捷键移动屏幕。
| 按键 | 作用 |
|---|---|
Ctrl + b |
向后移动一页 |
Ctrl + f |
向前移动一页 |
Ctrl + u |
向后移动半页 |
Ctrl + d |
向前移动半页 |
这里需要区分光标移动和屏幕翻页:前面介绍的 h、j、k、l 主要用于移动光标,而这些组合键用于移动屏幕显示的内容。
3. 删除文本
Vim 可以删除单个字符,也可以删除多个字符或整行内容。
| 命令 | 作用 |
|---|---|
x |
删除光标所在位置的一个字符 |
6x |
删除光标所在位置起的六个字符 |
X |
删除光标前面的一个字符 |
20X |
删除光标前面的 20 个字符 |
dd |
删除光标所在行 |
#dd |
从当前行开始删除指定的行数 |
这里的 # 表示数字。例如,3dd 表示从当前行开始删除三行。
需要注意,x 和 X 的方向不同:小写 x 删除光标所在位置的字符,大写 X 删除光标前面的字符。
4. 复制与粘贴
正常模式中,复制操作通常使用 y 开头的命令,粘贴则使用 p。
| 命令 | 作用 |
|---|---|
yw |
复制从光标所在位置到单词末尾的内容 |
#yw |
复制指定数量的单词 |
yy |
复制当前行 |
#yy |
从当前行开始复制指定数量的行 |
p |
粘贴缓冲区中的内容 |
例如:
text
yy
p
第一条命令复制当前行,第二条命令粘贴复制的内容。
如果要复制六行,可以使用:
text
6yy
注意,复制命令和粘贴命令的作用不同:y 负责复制,p 负责将缓冲区中的内容粘贴出来。
5. 替换字符
| 命令 | 作用 |
|---|---|
r |
替换光标所在位置的字符 |
R |
进入连续替换状态,直到按下 Esc |
两者的区别在于:r 用于替换单个字符;R 则可以连续替换后续内容,直到退出替换状态。
6. 撤销与恢复
| 命令 | 作用 |
|---|---|
u |
撤销上一次操作 |
Ctrl + r |
恢复撤销的操作 |
如果误执行了某个操作,可以先按 u 撤销;如果撤销后又想恢复,可以使用 Ctrl + r。
7. 更改文本
| 命令 | 作用 |
|---|---|
cw |
更改从光标所在位置到单词末尾的内容 |
c3w |
更改三个单词 |
这类命令用于直接更改文本。执行后会进入相应的输入状态,完成修改后按 Esc 返回正常模式。
8. 跳转到指定行
| 命令 | 作用 |
|---|---|
Ctrl + g |
显示光标所在行的行号 |
15G |
跳转到第 15 行 |
当文件较长时,可以通过行号快速定位需要查看或修改的内容。
【课件配图:第 12--13 页,正常模式命令集】
四、Vim 末行模式命令集
末行模式用于执行一些针对文件的操作。使用之前,需要先按 Esc 确保回到正常模式,再输入 : 进入末行模式。
1. 显示行号
输入:
vim
:set nu
执行后,文件每一行前面都会显示对应的行号。
2. 跳转到指定行
在末行模式中输入行号即可跳转。
例如:
vim
:15
按回车后,光标会跳转到第 15 行。
3. 查找字符
Vim 支持使用 / 和 ? 查找指定内容。
| 命令 | 作用 |
|---|---|
/关键字 |
从当前位置向后查找 |
?关键字 |
从当前位置向前查找 |
n |
按当前查找方向继续查找 |
例如,输入:
vim
/main
再按回车,就会向后查找 main。
如果第一次找到的内容不是想要的位置,可以按 n 继续查找。使用 / 和 ? 的主要区别是查找方向不同。
4. 保存文件
输入:
vim
:w
即可保存文件。
5. 离开 Vim
| 命令 | 作用 |
|---|---|
:q |
退出 Vim |
:q! |
不保存修改,强制退出 |
:wq |
保存并退出 |
如果文件存在未保存的修改,直接退出可能会失败,此时需要根据是否保留修改选择对应命令。
【课件配图:第 13--14 页,末行模式命令集】
五、Vim 操作总结
本节课重点学习了 Vim 的三种基本模式,以及不同模式下的常见操作。
可以将本节内容归纳为以下几个方面:
- 模式切换:掌握正常模式、插入模式和末行模式之间的切换方法。
- 文本移动:掌握光标移动、翻页和跳转指定行。
- 文本修改:掌握插入、删除、复制、粘贴、替换和更改。
- 操作恢复:掌握撤销与恢复。
- 文件管理:掌握显示行号、查找、保存和退出。
学习 Vim 不需要一次性记住所有命令。更有效的方式是打开一个测试文件,实际执行每一条命令,观察光标位置、文本内容和模式变化。
六、简单 Vim 配置
课件将简单 Vim 配置作为了解内容。本节介绍配置文件的位置和几个常用配置选项。
1. 配置文件的位置
Vim 常见的配置文件包括:
/etc/vimrc:系统公共配置文件,对所有用户生效。~/.vimrc:当前用户的个人配置文件。
个人配置文件位于用户的主目录下。如果文件不存在,可以自行创建。
例如,在当前用户的主目录中打开配置文件:
bash
cd ~
vim .vimrc
2. 常用配置选项
可以在 .vimrc 中加入以下配置:
vim
syntax on
set nu
set shiftwidth=4
这些配置的作用分别是:
| 配置 | 作用 |
|---|---|
syntax on |
开启语法高亮 |
set nu |
显示行号 |
set shiftwidth=4 |
设置缩进宽度为 4 个空格 |
保存配置文件后,再次打开 Vim 时即可使用对应设置。
3. 关于 Vim 插件
课件还介绍了通过安装插件完善 Vim 配置,并以 TagList 插件为例,说明下载压缩包、解压以及放置插件文件的基本思路。
原课件涉及的步骤是:下载 taglist_xx.zip,解压后将 doc 目录中的内容放到 ~/.vim/doc,将 plugin 目录中的内容复制到 ~/.vim/plugin。
本节先了解插件的用途和基本安装思路即可。
【课件配图:第 15 页,简单 Vim 配置与插件】
七、本节学习总结
通过本节学习,我们初步掌握了 Vim 的基本使用方法:
- 能够通过
vim 文件名打开文件。 - 能够在正常模式、插入模式和末行模式之间切换。
- 能够使用常见命令移动光标、删除和复制文本、替换内容、撤销操作。
- 能够使用末行模式查找内容、显示行号、保存和退出。
- 了解 Vim 配置文件的位置,以及语法高亮、行号和缩进宽度等常见配置。
对于 Linux 开发来说,Vim 是一项需要通过实践熟悉的基础工具。建议在自己的 Ubuntu 环境中建立测试文件,逐条练习本节命令,并观察执行结果。
本节的重点不是死记命令,而是弄清楚当前处于什么模式,以及应该使用哪一类命令完成目标。