Linux Vi/Vim 编辑器
Vi/Vim 是 Unix/Linux 系统中最常用的文本编辑器之一,其中 Vim 作为 Vi 的增强版本,不仅完全兼容 Vi 的所有功能,还加入了语法高亮、代码补全等现代编辑器特性,是目前开发者最常用的文本编辑器。
✅ Vi/Vim 编辑器的操作模式分为三种:命令模式、输入模式和底线命令模式:
- 命令模式(Command Mode):执行编辑命令,如光标移动、复制/粘贴/删除等操作。
- 输入模式(Insert Mode):可直接编辑文本内容。
- 底线命令模式(Command-line Mode):执行文件操作(
:w
/:q
)、搜索(/
)或替换(:s
)等命令。
什么是 Vim?
Vim 是经典文本编辑器 vi 的增强版本,它不仅保留了 vi 的全部功能,还新增了代码补全、语法高亮、编译及错误跳转等辅助特性。
作为程序员广泛使用的开发工具,Vim 在效率上远超传统的 vi 编辑器——如果说 vi 是一个功能完备的老式文本处理器,那么 Vim 则是专为开发者打造的现代化高效编程利器。
✅ Vi/Vim 键盘图:
Vi/Vim 的使用
✅ Vi/Vim 编辑器的操作模式分为三种:命令模式、输入模式和底行模式:
1. 命令模式
当您启动 Vim 时,默认进入的是命令模式(此时按键会触发命令,而非输入文字)。
此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i
,并不会输入一个字符,i
被当作了一个命令。
✅ 下面是普通模式常用的几个命令:
i
-- 切换到输入模式,在光标当前位置开始输入文本。x
-- 删除当前光标所在处的字符。:
-- 切换到底线命令模式,以在最底一行输入命令。a
-- 进入插入模式,在光标下一个位置开始输入文本。o
:在当前行的下方插入一个新行,并进入插入模式。O
-- 在当前行的上方插入一个新行,并进入插入模式。dd
-- 剪切当前行。yy
-- 复制当前行。p
(小写) -- 粘贴剪贴板内容到光标下方。P
(大写)-- 粘贴剪贴板内容到光标上方。u
-- 撤销上一次操作。Ctrl + r
-- 重做上一次撤销的操作。:w
-- 保存文件。:q
-- 退出 Vim 编辑器。:q!
-- 强制退出Vim 编辑器,不保存修改。
要使用 Vim 编辑文本,只需启动程序后(默认进入命令模式),按下i
键即可切换到输入模式开始编辑。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
2. 输入模式
在命令模式下按下i
就进入了输入模式,使用 Esc 键可以返回到普通模式。
✅ 在输入模式中,可以使用以下按键:
- 字符按键及 Shift 组合:输入字符。
- ENTER 回车键:换行。
- BACK SPACE 退格键:删除光标前一个字符。
- DEL 删除键:删除光标后一个字符。
- 方向键:在文本中移动光标。
- HOME/END:移动光标到行首/行尾。
- Page Up/Page Down:上/下翻页。
- Insert 切换光标为输入/替换模式:光标将变成竖线/下划线。
- ESC 退出输入模式:切换到命令模式。
3. 底线命令模式
在命令模式下,只需按下英文冒号(:
)键即可切换到底线命令模式,此时光标会自动跳转到编辑器底部,等待输入各种文件操作或编辑器控制命令。底线命令模式可以输入单个或多个字符的命令。
✅ 在底线命令模式下,Vim 提供了丰富的操作指令:
:w
:保存文件。:q
:退出 Vim 编辑器。:wq
:保存文件并退出 Vim 编辑器。:q!
:强制退出 Vim 编辑器,不保存修改。
✅ Vi/Vim 命令模式、输入模式、底线命令模式三中模式关系图:
Vi/Vim 使用实例
1. 打开终端,执行以下命令创建并编辑文件:
vim kaicz.txt
2. 按i
键进入输入模式,直接输入以下内容:
Hello, this is kaicz.txt!
Created by Vim editor.
Today's date is 2025-08-19.
3. 按ESC
键键退出输入模式,输入:wq
保存并退出(包括冒号)。
4. 使用cat
查看文件内容:
cat kaicz.txt
5. 预期输出结果:
Hello, this is kaicz.txt!
Created by Vim editor.
Today's date is 2025-08-19.
Vi/Vim 按键说明
除了上面示例中提到的 i(插入模式)、Esc(返回普通模式)和 :wq(保存并退出)这些基本操作外,Vim 实际上还提供了大量功能丰富的快捷键和命令。这些按键组合涵盖了文本编辑、光标移动、窗口操作等多个方面,能够显著提升编辑效率。
1. 模式切换:
按键 | 功能 |
---|---|
i |
进入插入模式(光标前插入) |
a |
进入插入模式(光标后插入) |
I |
进入插入模式(行首插入) |
A |
进入插入模式(行尾插入) |
o |
在当前行下方新建一行并进入插入模式 |
O |
在当前行上方新建一行并进入插入模式 |
Esc /Ctrl+[ |
返回普通模式 |
v |
进入可视模式(字符选择) |
V |
进入行可视模式(整行选择) |
Ctrl+v |
进入块可视模式(矩形选择) |
: |
进入命令行模式 |
2. 光标移动:
按键 | 功能 |
---|---|
h /← |
左移 |
j /↓ |
左移 |
k /↑ |
上移 |
l /→ |
右移 |
w |
跳到下一个单词开头 |
b |
跳到上一个单词开头 |
e |
跳到当前单词末尾 |
0 /^ |
跳到行首(0 是绝对行首,^ 是第一个非空白字符) |
$ |
跳到行尾 |
gg |
跳到文件第一行 |
G |
跳到文件最后一行 |
nG /:n |
跳到第 n 行(如5G 跳到第 5 行) |
Ctrl+o |
返回上一次光标位置 |
Ctrl+i |
前进到下一次光标位置 |
3. 文本编辑部分:
按键 | 功能 |
---|---|
x |
删除当前字符 |
X |
删除前一个字符 |
dw |
删除当前单词(从光标到单词末尾) |
dd |
删除当前行 |
D /d$ |
删除从光标到行尾 |
d0 /d^ |
删除从光标到行首 |
dnG |
删除从当前行到第n行(如d5G 删除到第5行) |
dgg |
删除从当前行到文件开头 |
dG |
删除从当前行到文件末尾 |
yy |
复制当前行 |
yw |
复制当前单词 |
y$ |
复制从光标到行尾 |
p |
粘贴到光标后 |
P |
粘贴到光标前 |
"*y |
复制到系统剪贴板(需支持+clipboard ) |
"*p |
粘贴系统剪贴板内容 |
u |
撤销上一次操作 |
Ctrl+r |
重做撤销的操作 |
U |
恢复当前行(撤销对当前行的所有修改) |
4. 窗口分屏部分:
按键 | 功能 |
---|---|
:sp /:split |
水平分屏 |
:vsp /:vsplit |
垂直分屏 |
Ctrl+w +h/j/k/l |
切换分屏方向 |
Ctrl+w +w |
循环切换分屏 |
Ctrl+w ++ |
增加分屏高度 |
Ctrl+w +- |
减少分屏高度 |
Ctrl+w += |
均衡分屏大小 |
Ctrl+w +q /:q |
关闭当前分屏 |
Ctrl+w +o |
只保留当前分屏 |
5. 文件操作部分:
命令 | 功能 |
---|---|
:e filename |
打开文件 |
:w |
保存文件 |
:w filename |
另存为 |
:q |
退出Vim |
:q! |
强制退出(不保存) |
:wq /:x /ZZ |
保存并退出 |
:wqa |
保存所有文件并退出 |
:bn /:bp |
切换缓冲区(下一个/上一个文件) |
:bd |
关闭当前缓冲区 |
6. 其他实用命令部分
按键/命令 | 功能 |
---|---|
. |
重复上一次操作 |
>> |
向右缩进 |
<< |
向左缩进 |
== |
自动缩进当前行 |
Ctrl+n /Ctrl+p |
自动补全(向下/向上) |
:set number |
显示行号 |
:set nonumber |
隐藏行号 |
:set paste |
进入粘贴模式(避免自动缩进) |
:set nopaste |
退出粘贴模式 |
:help command |
查看命令帮助 |
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈