指令vi file表示要进入vi环境,编辑档案file 。 vi有三种状态﹝ mode ﹞: input mode , command mode ,和line mode 。 初入vi 时,自动在command mode 中。
在command mode 时, 每一个按键被解释成vi 的指令,请不要在command mode 下输入中文, vi 会做出一些你无法预期的动作。
要由command mode 进入input mode, 请按【 i 】﹝ insert ﹞或【 a 】﹝ append ﹞; 前者插字于游标的左边,后者填字于右边。
在input mode 时,你所输入的文字都会直接出现在游标所指的地方, 和一般的编辑器一样。 按【 Backspace 】会向左边删除文字, 但是最多只能修正到你按【 i 】或【 a 】进入input mode 的那一个位置而已。 要回到command mode,请按【 Esc 】。
当搞不清是在input mode 或command mode 时, 按一次【 Esc 】便回到command mode。
此处我们不谈line mode,若不慎闯入,输入vi回到command mode ﹝在line mode时,萤幕左下角有一个冒号: ﹞。
现在要介绍一些command mode 中常用的基本指令, 以下均假设处于command mode 中﹝请注意大小写﹞ :
- 按【 h 】、【 j 】、【 k 】、【 l 】 分别代表向左、下、上、右移动。
- 按【 H 】、【 M 】、【 L 】分别将游标移到萤幕的上、中、下。
- 【 Ctrl-G 】显示游标在第几列。
- 输入n 【 G 】将游标移到第n列,而【 G 】是将游标移到最后一列。
- 【 Ctrl-F 】会将画面翻下一页,【 Ctrl-B 】会将画面翻上一页。
- 【 w 】移到下一个字的开头,【 b 】移到上一个字的开头, 【 e 】移到下一个字的结尾。 这里的「字」指的是符合一般直觉认识的英文字。 用在中文文件中则没什么用处。
- 【 W 】移到下一个字的开头,【 B 】移到上一个字的开头, 【 E 】移到下一个字的结尾。 这里的「字」指的是广义字,也就是以空白隔开的连续字符。
- 【 0 】﹝ zero ﹞将游标移到该列的第一格,【 $ 】移到该列的最后一格。
- 【 X 】消去游标左边的字母﹝ backspace ﹞, 【 x 】消去游标上的字母﹝ delete ﹞。
- 【 s 】﹝ substitute ﹞替换游标上的字元, 【 S 】替换游标所在的列。
- 输入dd消去一列。
- 输入yy复制一列。
- 【 p 】﹝ join ﹞将刚消去或复制的东西插入游标的右或下边, 而【 P 】插入左或上边。
- 【 J 】会将目前游标所在的列和下一列合并成一列。
- 【 u 】﹝ undo ﹞会取消上一个指令。
- 除了 【 G 】、【 u 】、【 J 】、【 p 】和【 P 】以外,在上述指令前先按一个正整数n ,表示重复该指令n次。 例如下指令5dd便会删除五列,下指令8x便会删除八个字元,而25l使游标向右移25格。
- 按【 / 】,可见/出现在左下角。 输入string ,则vi向下寻找string 。 到了最后一列,vi 会回到第一列往下找。 游标将停在第一个被找到的string ,否则vi会报告找不到。 找到一次之后,按【 n 】找下一个,【 N 】找上一个。
输入ZZ表示存档并离开vi。 若要离开但不存档,则必须经过line mode ──输入:q 。 若此档内容被更改过,vi 不许您轻易离开。 输入:q!以强制离开。