vi详细指令表 
(一)、基本编辑指令: 
新增 (append) 
 
a :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。 
 
A: 从光标所在列最後面的地方开始新增资料。 
 
插入 (insert) 
 
i: 从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。 
 
I :从光标所在列的第一个非空白字元前面开始插入资料。 
 
开始 (open) 
 
o :在光标所在列下新增一列并进入输入模式。 
 
O: 在光标所在列上方新增一列并进入输入模式。 
 
x: 删除光标所在字符。 
 
dd :删除光标所在的列。 
 
r :修改光标所在字元,r 後接著要修正的字符。 
 
R: 进入取替换状态,新增文字会覆盖原先文字,直到按 [ESC] 回到指令模式下为止。 
 
s: 删除光标所在字元,并进入输入模式。 
 
S: 删除光标所在的列,并进入输入模式。 
 
(二)、光标移动指令: 
由於许多编辑工作是藉由光标来定位,所以 vi 提供许多移动光标的方式,这个我们列 
几张简表来说明(这些当然是指令模式下的指令): 
┌—————┬—————————————┬—————┐ 
│指令      │说明                      │功能键    │ 
├—————┼—————————————┼—————┤ 
│0         │移动到光标所在列的最前面  │[Home]    │ 
├—————┼—————————————┼—————┤ 
│$         │移动到光标所在列的最後面  │[End]     │ 
├—————┼—————————————┼—————┤ 
│[CTRL][d] │向下半页                  │          │ 
├—————┼—————————————┼—————┤ 
│[CTRL][f] │向下一页                  │[PageDown]│ 
├—————┼—————————————┼—————┤ 
│[CTRL][u] │向上半页                  │          │ 
├—————┼—————————————┼—————┤ 
│[CTRL][b] │向上一页                  │ [PageUp] │ 
└—————┴—————————————┴—————┘ 
┌——┬—————————————————┐ 
│指令│说明                              │ 
├——┼—————————————————┤ 
│H   │移动到视窗的第一列                │ 
├——┼—————————————————┤ 
│M   │移动到视窗的中间列                │ 
├——┼—————————————————┤ 
│L   │移动到视窗的最後列                │ 
├——┼—————————————————┤ 
│b   │移动到下个字的第一个字母          │ 
├——┼—————————————————┤ 
│w   │移动到上个字的第一个字母          │ 
├——┼—————————————————┤ 
│e   │移动到下个字的最後一个字母        │ 
├——┼—————————————————┤ 
│^   │移动到光标所在列的第一个非空白字元│ 
└——┴—————————————————┘ 
┌——┬———————————————————┐ 
│指令│说明                                  │ 
├——┼———————————————————┤ 
│n-  │减号移动到上一列的第一个非空白字元    │ 
│    │前面加上数字可以指定移动到以上 n 列   │ 
├——┼———————————————————┤ 
│n+  │加号移动到下一列的第一个非空白字元    │ 
│    │前面加上数字可以指定移动到以下 n 列   │ 
├——┼———————————————————┤ 
│nG  │直接用数字 n 加上大写 G 移动到第 n 列 │ 
└——┴———————————————————┘ 
┌————┬———————————————┐ 
│指令    │说明                          │ 
├————┼———————————————┤ 
│fx      │往右移动到 x 字元上           │ 
│Fx      │往左移动到 x 字元上           │ 
├————┼———————————————┤ 
│tx      │往右移动到 x 字元前           │ 
│Tx      │往左移动到 x 字元前           │ 
├————┼———————————————┤ 
│;       │配合 f&t 使用,重复一次       │ 
│,       │配合 f&t 使用,反方向重复一次 │ 
├————┼———————————————┤ 
│/string │往右移动到有 string 的地方    │ 
│?string │往左移动到有 string 的地方    │ 
├————┼———————————————┤ 
│n       │配合 /&? 使用,重复一次       │ 
│N       │配合 /&? 使用,反方向重复一次 │ 
└————┴———————————————┘ 
┌————┬———————————————————┬——————————┐ 
│指令    │说明                                  │备注                │ 
├————┼———————————————————┼——————————┤ 
│n(      │左括号移动到句子的最前面              │句子是以            │ 
│        │前面加上数字可以指定往前移动 n 个句子 │! . ? 三种符号来界定│ 
│n)      │右括号移动到下个句子的最前面          │                    │ 
│        │前面加上数字可以指定往後移动 n 个句子 │                    │ 
├————┼———————————————————┼——————————┤ 
│n{      │左括弧移动到段落的最前面              │段落是以            │ 
│        │前面加上数字可以指定往前移动 n 个段落 │段落间的空白列界定  │ 
│n}      │右括弧移动到下个段落的最前面          │                    │ 
│        │前面加上数字可以指定往後移动 n 个段落 │                    │ 
└————┴———————————————————┴——————————┘ 
(三)、更多的编辑指令 
这些编辑指令非常有弹性,基本上可以说是由指令与范围所构成。例如 dw 是由删除指令 d 与范围 w 所 
组成,代表删除一个字 d(elete) w(ord) 。 
指令列表如下: 
d 删除(delete) 
y 复制(yank) 
p 放置(put) 
c 修改(change) 
范围可以是下列几个: 
e 光标所在位置到该字的最後一个字母 
w 光标所在位置到下个字的第一个字母 
b 光标所在位置到上个字的第一个字母 
$ 光标所在位置到该列的最後一个字母 
0 光标所在位置到该列的第一个字母 
) 光标所在位置到下个句子的第一个字母 
( 光标所在位置到该句子的第一个字母 
) 光标所在位置到该段落的最後一个字母 
{ 光标所在位置到该段落的第一个字母 
说实在的,组合这些指令来编辑文件有一点点艺术气息。不管怎麽样,它们提供更多编辑文字的能力。值得 
注意的一点是删除与复制都会将指定范围的内容放到暂存区里,然後就可以用指令 p 贴到其它地方去,这 
是 vi 用来处理区段拷贝与搬移的办法。 
某些 vi 版本,例如 Linux 所用的 elvis 可以大幅简化这一坨指令。如果稍微观察一下这些编辑指令 
就会发现问题其实是定范围的方式有点杂,实际上只有四个指令罢了。指令 v 非常好用,只要按下 v 键, 
光标所在的位置就会反白,然後就可以移动光标来设定范围,接著再直接下指令进行编辑即可。 
对於整列操作, vi 另外提供了更方便的编辑指令。前面曾经提到过删除整列文字的指令 dd 就是其中一个 
;cc 可以修改整列文字;而 yy 则是复制整列文字;指令 D 则可以删除光标到该列结束为止所有的文字。 
(四)、文件操作指令 
文件操作指令多以 : 开头,这跟编辑指令有点区别。 
:q 结束编辑(quit) 
:q! 不存档而要放弃编辑过的文件。 
:w 保存文件(write)其後可加所要存档的档名。 
:wq 即存档後离开。 
zz 功能与 :wq 相同。 
:x 与:wq相同