不得不承认,vi 是非常优秀的文本编辑器。虽然命令繁杂,但是经过一段时间的使用,才发现它可以和 windows 下的一些著名编辑器媲美。
vi 有三种方式,分别是编辑方式、插入方式和命令方式。其功能键参看下表:
编辑方式:
功能键 |
功能 |
ctrl-f |
前翻一页 |
ctrl-b |
后翻一页 |
H |
将光标移动到屏幕最上面一行 |
M |
将光标移动到屏幕中间 |
L |
将光标移动到屏幕最下面一行 |
w |
右移光标到下一个字的开头 |
e |
右移光标到一个字的末尾 |
b |
左移光标到前一个字的开头 |
0 |
左移光标到到本行的开始 |
^ |
移动光标到行中第一个非空字符 |
$ |
右移光标到本行末尾 |
/string |
向前搜索指定的字符串 |
? string |
向后搜索指定的字符串 |
n |
搜索下一个字符串 |
rc |
用 c 替换当前光标处的字符 |
x |
删除当前光标处的字符 |
dw |
删除光标右面的字 |
db |
删除光标左面的字 |
dd |
删除光标所在行 |
在上面的命令前加上数字,表示重复操作的次数 |
|
d$ |
删除当前光标到行末尾之间的字符 |
d0 |
从当前光标起删除字符直到行的开始 |
J |
删除本行的回车,并和下一行合并 |
p |
将缓冲区内的内容粘贴到当前光标的后面 |
P |
将缓冲区内的内容粘贴到当前光标的前面 |
yy |
将当前行复制到剪切缓冲区 |
nyy |
将 n行复制到剪切缓冲区 |
u |
撤消前一命令的结果 |
. |
重复最后一条修改正文的命令 |
插入方式:
功能键 |
功能 |
i |
在光标左面插入正文 |
a |
在光标右面插入正文 |
o |
在光标所在行下面增加行 |
O |
在光标所在行上面增加行 |
I |
在光标行的开头插入 |
A |
在光标行的末尾插入 |
s |
用新的正文替换光标所指字符 |
cw |
用新的正文替换光标右边的字 |
cb |
用新的正文替换光标前边的字 |
cd |
用新的正文替换光标所在的行 |
前面加上数字,表示该命令重复 n 次 |
|
c$ |
用新正文替换从光标开始到本行末尾的所有字符 |
c0 |
用新正文替换从光标开始到本行开头的所有字符 |
命令方式:
功能键 |
功能 |
:q |
在未做修改的情况下退出 |
:q! |
将任何修改作废,退出 |
:w |
存盘 |
:wq |
存盘并退出 |
:w file |
将编辑的内容写到 file 文件中去 |
:r file |
将 file 文件读入,并放在当前光标行的后面 |
:e file |
编辑新文件 file 代替旧内容 |
:f file |
将当前正文的名称改未 file |
:f |
打印当前正文的名称和状态 |
:n |
移动光标到第 n 行 |
:/str/ |
将光标移动到下一个包含 str 字符串的行 |
:?str? |
将光标移动到最近的一个包含 str 字符串的行 |
:/str/w file |
将第一个包含 str 字符串的行写到文件 file 中 |
:/str1/,/str2/w file |
将从包含 str1 到 包含 str2 之间的行写入 file 文件 |
:s/str1/str2 |
用 str2 替换掉首次出现的 str1 |
:s/str1/str2/g |
用 str2 替换掉每次出现的 str1 |
:d |
删除当前光标行 |