一、基本操作
操作 | 命令 | 功能描述 |
---|---|---|
启动Vi | vi filename |
打开指定文件,如果文件不存在则新建。 |
退出Vi | :q |
退出Vi,若文件未修改则直接退出。 |
:q! |
强制退出,放弃所有修改。 | |
:wq 或 :x |
保存文件并退出。 |
二、Vi的基本模式
模式 | 描述 |
---|---|
命令模式(Command Mode) | 默认模式,用于执行命令如删除、复制、查找等。 |
输入模式(Insert Mode) | 用于输入文本,通过按 i , a , o 等键进入。 |
末行模式(Last Line Mode) | 输入 : 后进入,用于执行保存、退出、查找替换等命令。 |
三、Vi的命令模式操作
操作类别 | 命令 | 功能描述 |
---|---|---|
光标移动 | h |
向左移动一个字符。 |
j |
向下移动一行。 | |
k |
向上移动一行。 | |
l |
向右移动一个字符。 | |
w |
移动到下一个单词的开头。 | |
b |
移动到上一个单词的开头。 | |
e |
移动到当前单词的末尾。 | |
0 |
移动到当前行的开头。 | |
$ |
移动到当前行的末尾。 | |
gg |
移动到文件的开头。 | |
G |
移动到文件的末尾。 | |
nG |
移动到第 n 行。 | |
删除操作 | x |
删除光标所在处的一个字符。 |
dd |
删除光标所在行。 | |
d$ |
删除从光标开始到行末的内容。 | |
d0 |
删除从光标开始到行首的内容。 | |
ndd |
删除当前行及下面 n-1 行。 | |
复制和粘贴 | yy |
复制当前行。 |
yny |
复制当前行及下面 n-1 行。 | |
p |
在光标所在行下方粘贴。 | |
P |
在光标所在行上方粘贴。 | |
撤销和重做 | u |
撤销上一次操作。 |
Ctrl + r |
重做上一次被撤销的操作。 | |
行号和文件信息 | :number |
显示当前行号。 |
:set number |
显示所有行号。 | |
Ctrl + g |
显示当前光标所在的行号和文件信息。 |
四、Vi的输入模式操作
命令 | 功能描述 |
---|---|
i |
在光标所在位置前插入文本。 |
a |
在光标所在位置后插入文本。 |
o |
在光标所在行下方插入新行。 |
O |
在光标所在行上方插入新行。 |
五、Vi的末行模式操作
操作类别 | 命令 | 功能描述 |
---|---|---|
查找 | :/pattern |
从光标位置开始向下查找 pattern 模式,不包含此行。 |
:?pattern |
从光标位置开始向上查找 pattern 模式,不包含此行。 |
|
替换 | :s/旧文本/新文本/g |
在当前行中将旧文本替换为新文本。 |
:%s/旧文本/新文本/g |
在整个文件中将旧文本替换为新文本。 | |
:s/旧文本/新文本/gc |
在整个文件中将旧文本替换为新文本,并逐行确认。 | |
打开和保存文件 | :e filename |
打开另一个文件进行编辑。 |
:w filename |
将当前文件保存为另一个文件。 | |
:x filename |
保存当前文件并退出。 | |
分割窗口 | :split filename |
水平分割窗口并打开另一个文件。 |
:vsplit filename |
垂直分割窗口并打开另一个文件。 | |
其他 | :help command |
显示关于命令的帮助信息。 |
:set option |
设置编辑器选项,如 :set ignorecase 、:set autoindent 等。 |
六、Vi的可视化模式
命令 | 功能描述 |
---|---|
v |
按字符选择。 |
V |
按行选择。 |
Ctrl + v |
按块选择。 |
七、高级操作
操作类别 | 命令 | 功能描述 |
---|---|---|
宏 | qa |
开始录制宏,a 是宏的名称,A-Z 可以记录多个宏。 |
q |
停止录制宏。 | |
@a |
执行宏 a。 | |
快速编辑 | Ctrl + f |
向前翻页。 |
Ctrl + b |
向后翻页。 | |
:n |
跳转到下一个文件(用于多文件编辑)。 | |
:N |
跳转到上一个文件。 | |
自动补全 | Ctrl + x 、Ctrl + e |
在输入模式下启用自动补全功能。 |
Ctrl + n |
在输入模式下根据上下文补全单词。 | |
Ctrl + p |
在输入模式下根据上下文补全单词。 |
八、Vi的插件和扩展
插件名称 | 功能描述 |
---|---|
Vundle | Vi 的插件管理器。 |
YouCompleteMe | 代码补全插件。 |
Syntastic | 语法检查插件。 |
NERDTree | 文件树浏览插件。 |
快捷命令总结
操作 | 命令 | 功能描述 |
---|---|---|
连续选中 | 按字符:v |
按字符选择。 |
按行:V |
按行选择。 | |
按块:Ctrl + v |
按块选择。 | |
跳到最后一行 | G |
跳到文件末尾。 |
:$ |
跳到文件末尾。 |