本手册介绍了 vi/vim 编辑器的主要功能。为了便于查找,这里一并给出了命令和它们的定制参数。在使用这个手册之前,必须注意以下几点:
●很多命令可以与重复因子一起使用(vi);
●vim(不是vi)把一个区域(region)定义为一个连续的文本块,许多命令与文本块有关;
一个区域可以用v定义,后面跟一个光标移动命令;
●用[Ctrl+l]组合键可以清除并重画屏幕;
●:set命令用来定制编辑环境。
移动光标
命令 |
功能 |
h |
光标左移 |
l(或空格键) |
光标右移 |
k(或[Ctrl+p]) |
光标上移 |
j(或[Ctrl+n]) |
光标下移 |
[Ctrl+f] |
向前翻页 |
[Ctrl+b] |
向后翻页 |
[Ctrl+d] |
向前翻半页 |
[Ctrl+u] |
向后翻半页 |
1G |
跳到文件首 |
40G |
跳到第40行 |
G |
跳到文件尾 |
[Ctrl+g] |
显示当前行号及文件的百分比 |
:set number
|
显示所有带行号的行 |
在一行内移动光标 B、E和W命令的作用与b、e和w的作用一样,只是后者忽略了标点符号。
命令 |
功能 |
b |
向后移动到单词首 |
e |
向前移动到单词尾 |
w |
向前移动到单词首 |
0或| |
移动到行首 |
30| |
移动到第30列 |
^ |
移动到本行的第一个单词的首字符 |
$ |
移动到行尾
|
插入文本
命令 |
功能 |
i |
在光标的左侧插入字符 |
20i-[Esc] |
插入20个连字符 |
I |
在行首插入字符 |
[Ctrl+v][Ctrl+b] |
插入[Ctrl+b]字符 |
[Ctrl+v][Esc] |
插入[Esc]字符 |
a |
在光标的右侧添加文本 |
A |
在行尾添加文本 |
o |
在当前行下面插入一空行 |
O |
在当前行上面插入一空行 |
:set showmode
|
当vi处在输入模式下时显示提示信息 |
:set sm
|
即时显示配对的)或} |
:set ts=n
|
把制表符设置为n(默认为8) |
:set ai
|
下一行从前一行的缩进位置开始 |
删除和移动文本
命令 |
功能 |
x |
删除光标所在的字符 |
6x |
删除光标位置的字符以及右侧的5个字符 |
X |
删除前一个字符 |
dd |
删除当前行 |
4dd |
删除4行 |
64dd |
删除64行 |
dw |
删除一个单词 |
d0 |
删除到行首 |
d$ |
删除到行尾 |
d |
删除一个区域(只用于vim) |
p |
把被剪切的文本粘贴到下面(整行)或右侧(部分行) |
P |
把被剪切的文本粘贴到上面(整行)或左侧(部分行) |
"add |
把当前行粘贴到缓冲区a里 |
"ap |
把缓冲区a里的内容粘贴到当前位置 |
J |
把当前行于下一行合并为一行 |
xp |
调换两个字符的位置 |
修改文本
命令 |
功能 |
rch |
把光标位置的字符替换为ch |
R |
替换光标右边的文本 |
s |
把光标所在的字符替换为任意个字符 |
S |
替换整行内容 |
cw |
修改一个单词 |
c |
修改区域里的文本(vim) |
~ |
改变所扫描的或区域里的字母的大小写 |
!tr'[a-z]''[A-Z]' |
把区域里的字母转换为大写(vim) |
!tr'[A-Z]''[a-z]' |
把区域里的字母转换为小写(vim) |
复制文本
命令 |
功能
|
yy |
复制当前行 |
6yy |
复制六行 |
yw |
复制单词 |
y |
复制区域(vim) |
p |
把复制的文本粘贴到右边或下面 |
P |
把复制的文本粘贴到左边或上面 |
"ayy |
把当前行复制到缓冲区a里 |
"ap |
恢复缓冲区a里的内容 |
启动编辑器
命令 |
功能
|
vi +100 foo
|
打开文件foo并把光标定位在100行 |
vi +/pat foo
|
打开文件foo并把光标定位在pat第一次出现的行 |
vi +foo |
打开文件foo,把光标定位在文件尾 |
vi foo1 foo2 ...
|
打开文件foo1,用n切换到foo2等 |
vi -r foo
|
把交换文件里的内容恢复到缓冲区里 |
vi -R foo
|
一只读模式打开foo文件 |
保存与退出
命令 |
功能 |
:w |
保存文件并继续编辑 |
:w bar
|
同微软Windows操作系统中的“另存为……” |
:w! bar
|
同上,但是覆盖现存的文件bar |
:n1,n2w foo
|
把n1到n2之间的行保存到文件foo
|
:n1,n2w>>foo |
把n1到n2之间的行添加到foo文件尾 |
:.w foo
|
把当前行保存到文件foo |
:$w foo
|
把最后一行保存到文件foo |
:x |
保存并退出编辑器 |
:wq |
同上 |
:q |
如果文件的内容没有变化则退出编辑器 |
:q! |
放弃修改并退出编辑器 |