vi是Linux下标准的文本编辑程序,也是Linux系统命令行下最经常使用的文本文件可视化编辑器
vi编辑程序有两种工作模式,即命令模式和文本输入模式。在命令模式下,输入的字符被解释为vi命令;在文本输入模式下,输入的字符作为正在编辑的文件的正文内容来接受,按Esc键则切换到vi命令模式
1、命令行下用vi打开文件的命令选项
vi使用的选项 | 说明 |
vi filename | 打开或者新建一个文件并将光标置于第一行的首部 |
vi -f filename | 恢复上次vi打开时崩溃的文件 |
vi -R filename | 把指定的文件以只读方式放入编辑器中 |
vi + filename | 打开文件并将光标置于最后一行的首部 |
vi +n filename | 打开文件并将光标置于第n行的首部 |
vi +/pattern filename | 打开文件并将光标置于第一个与pattern匹配的位置 |
vi -c command filename | 在对文件进行编辑前,先执行指定的命令 |
2、vi命令模式下的命令选项
按键或输入的字符 | 说明 |
h | 光标左移一个字符 |
l | 光标右移一个字符 |
Backspace键 | 光标左移一个字符 |
k或Ctrl+p | 光标上移一个字符 |
j或Ctrl+n | 光标下移一个字符 |
Enter键 | 光标下移一行 |
w或W | 光标右移一个字到字首 |
b或B | 光标左移一个字到字首 |
e或E | 光标右移一个字到字尾 |
nG | 光标移动到第n行首部 |
n+ | 光标下移n行 |
n- | 光标上移n行 |
n$ | 相对于当前光标所在行,光标再向后移动n行到行尾 |
H | 光标移至当前屏幕的顶行 |
M | 光标移至当前屏幕的中间行 |
L | 光标移至当前屏幕的最底行 |
0 | 将光标移至当前行首 |
$ | 将光标移至当前行尾 |
:$ | 将光标移动到文件最后一行的行首 |
按键或输入的字符 | 说明 |
Ctrl+u | 相对于当前屏幕,向文件首翻半屏 |
Ctrl+d | 相对于当前屏幕,向文件尾翻半屏 |
Ctrl+b | 相对于当前屏幕,向文件首翻一屏 |
Ctrl+f | 相对于当前屏幕,向文件尾翻一屏 |
nz+Enter | 将文件的第n行滚至屏幕顶部,如果不指定n值,将当前行滚至屏幕顶部 |
按键或输入的字符 | 说明 |
Esc | 返回命令行模式 |
i | 在光标前输入文字 |
a | 在光标后输入文字 |
o | 在当前行之下新开一行 |
O | 在当前行之上新开一行 |
r | 替换光标所在字符 |
x | 删除光标所在的字符 |
dd | 删除光标所在行。删除的内容自动保存在剪贴板 |
yy | 将光标所在行复制到剪贴板,如果在yy前加数字,则表示复制n行 |
p | 将剪贴板的内容复制到光标后 |
P | 将剪贴板的内容复制到光标前 |
yw | 将光标所在的单词复制到剪贴板 |
按键或输入的字符 | 说明 |
/abc | 在文件中向前查找字符串abc |
?abc | 在文件中向后查找字符串abc |
n | 在同一方向重复上次的搜索命令 |
N | 在相反方向重复上次的搜索命令 |
:s/a1/a2/g | 将当前光标所在行中的所有a1均用a2替换 |
:n1,n2s/a1/a2/g | 将文件第n1至n2行中所有的a1均用a2替换 |
:g/a1/a2/g | 将文件中所有的a1均用a2替换 |
:set nu | 给文件的每行加上行号 |
按键或输入的字符 | 说明 |
:wq | 保存并退出,“:wq!”表示不保存,强制退出 |
:q | 不保存退出,“:q!”表示不保存,强制退出 |
:w | 保存但不退出,“:w!”表示强制保存,“:w filename”表示将修改保存到“filename”中,相当于另存文件 |
x! | 保存并退出 |