一、基本操作
操作 | 命令 | 功能描述 |
---|---|---|
启动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 | 跳到文件末尾。 |
:$ | 跳到文件末尾。 |