VI 命令
插入文本
刚进入VI时,是出于命令模式的,这是是无法输入文本的,因此需要进入插入模式。进入插入模式的命令有如下几个:
-
i 从目前光标所在之处插入文字
-
a 从目前光标所在下一个字符插入文字
-
o 往下插入一个空行
-
O 往上插入一个空行
输入这几个命令后,就进入了编辑模式,可以通过屏幕下方最后一行看到当前为插入状态:
可以通过Insert键切换插入状态和改写状态(和图像界面中一样)。
另外,在命令模式下,也可以通过Insert键进入编辑模式(插入状态),不过通常还是前面介绍的四个命令来进入编辑模式。
离开和保存文件
在VI中,离开和保存文件对应的命令有这几个(使用前记得进入命令模式):
-
:w 保存
-
:w filename 另存为
-
:wq 保存并退出 [常用]
-
:q! 强制退出
-
SHIFT+zz 保存并退出,功能同:wq [常用]
移动光标
在VI中,移动光标并不是我们游戏中常用的WASD,而是h、j、k、l,分别控制光标左、下、上、右移一格,分别分布在右手四个指头,新手需要一段时间来适应。使用非常频繁,需要熟练掌握。
其它一些光标控制命令如下:
- Ctrl+B:屏幕往后移动一页。
- Ctrl+F:屏幕往前移动一页。
- Ctrl+U:屏幕往后移动半页。
- Ctrl+D:屏幕往前移动半页。
- gg:移动文章的开头。
- G:移动到文章的最后。
- w:光标跳到下个word的开头。
- e:光标跳到下个word的字尾。
- b:光标回到上个word的开头。
- $:移到光标所在行的行尾。
- ^:移到该行第一个非空白的字符。
- 0:移到该行的开头位置。
- #:移到该行的第#个位置,例:51、121。
另外,还有几个行操作相关命令集中介绍一下
- :set nu 显示行号
- :set nonu 隐藏行号
- :# 移动到第#行,如:15
- Ctrl+G: 在状态栏显示当前进度
- #G: 移动到第#行,例:15G
删除文字
- x:删除光标所在位置的后面一个字符。
- #x:例如,6x 表删除光标所在位置的后面6个字符。
- X:大字的X,每按一次删除光标所在位置的前面一个字符。
- #X:例如,20X 表删除光标所在位置的前面20个字符。
- dd:删除光标所在行。
- #dd:例如,6dd表删除从光标所在的该行往下数6行之文字。
复制粘贴
我个人并不是很习惯VI提供的复制粘贴,由于没有高亮选中,用起来感觉不是很方便。平时大都是用的终端工具的复制粘贴功能,因此这里的命令我都加灰了,感兴趣的可以看看。
- yw:将光标所在处到字尾的字符复制到缓冲区中。
- p:将缓冲区内的字符粘贴到光标所在位置(指令'yw'与'p必须搭配使用)。
- yy:复制光标所在行。[超常用]
- p:复制单行到您想粘贴之处。(指令'yy'与'p'必须搭配使用)
- #yy:如:6yy表示拷贝从光标所在的该行往下数6行之文字。[常用]
- p: 复制多行到您想粘贴之处。(指令'#yy'与'p'必须搭配使用)
- ayy:将复制行放入buffer a, vi提供buffer功能,可将常用的数据存在buffer
- ap:将放在buffer a的数据粘贴。
- b3yy:将三行数据存入buffer b。
- b3p:将存在buffer b的资料粘贴
撤销和重做
撤销和重做在任何编辑器里都是非常有用的命令:
- u:假如您误操作一个指令,可以马上按u,回复到上一个操作。
- .: 重复执行上一次的指令
查找和替换
查找和替换的语法笔记复杂,先简单的介绍一下查找的语法:
- /pattern<Enter> :向下查找pattern匹配字符串
- ?pattern<Enter> :向上查找pattern匹配字符串
使用了查找命令之后,使用如下两个键快速查找:
- n:按照同一方向继续查找
- N:按照反方向查找
至于替换的语法,限于篇幅所限,这里就不介绍了,给一个链接供大家参考一下:http://blog.csdn.net/lanxinju/article/details/5731843。
VI对编程的支持
VI对编程还是提供了一定的支持的。例如,它是支持括号配对、语法高亮显示的。
不过,由于并不支持语法解析功能,作为编码工具和专业的代码编辑器如SourceInsight、VisualStudio等比起来还是有很大差距的。个人感觉做小型项目和临时修改代码用还行,但做大型项目是有点力不从心的。