Vim 的指令模式为用户提供了一个向其传递各种复杂命令的接口,常常被用户执行的操作有查找操作、复制粘贴、删除操作跟修改操作等。前面已经介绍过,在任意模式下按 “Esc” 切换到一般模式,然后按 “:” 切换到指令模式。由于指令模式下,光标跳到屏幕的最后一行,并在行首显示冒号,所以该模式通常又被称为“末行模式”,用户输入的内容均显示在屏幕的最后一行,输入完毕按回车后 Vim 方才执行命令。
一、光标移动操作
在指令模式下的光标移动只有两种方式,一种是执行 “:n” 命令,即在屏幕最下面的指令输入行输入“n”后回车,该命令的作用是将光标移动到第 n 行的第一个非空字符位置,如果第 n 行为空行,则光标移动到行首;另一种是执行“:$”命令,该命令的作用是将光标移动到最末一行的第一个非空字符位置,如果最末行为空行,则光标移动到最末行行首。
这里摆脱指令模式的范畴,来了解一下一般模式下的光标移动操作。一般模式下的光标移动操作方法很多,不仅可以使用四个方向键来移动光标,还可以使用h、j、k、l这四个键代替方向键来移动光标,熟练使用以后可以手不离开字母键盘位置就能完成所有操作,从而提高工作效率。
以下命令均在一般模式下完成光标移动:
h 光标左移,如果在按h 命令前输入数字n 则光标左移 n 个字符; l 光标右移,如果在按l 命令前输入数字n 则光标右移 n 个字符; j 光标上移,如果在按j 命令前输入数字n 则光标上移 n 个字符; k 光标下移,如果在按k 命令前输入数字n 则光标下移 n 个字符; 0 零光标移到行首; $ 光标移到行尾; H 光标移到屏幕上显示的第一行 并不一定是文件头; L 光标移到屏幕上显示的最后一行 并不一定是文件尾; M 光标移到屏幕的中间一行; nG 光标移到第 n 行; w或W 将光标右移至下一个单词的词首; e 或E 如果光标起始位置处于单词内即(非单词尾处),则该命令将把光标移到本单词词尾;如果光标起始位置处于单词尾,则该命令将把光标移动到下一个单词的词尾。 b 或B 如果光标处于所在单词内(即非单词首),则该命令将把光标移至本单词词首;如果光标处于所在单词的词首,则该命令将把光标移到上一个单词的词首; Ctrl+g 状态命令,显示当前编辑文档的状态。包括正在编辑的文件名、是否修改过、当前行号、文件的行数以及光标之前的行占整个文件的百分比。
二、查找操作
Vim 编辑器为我们提供了两类查找命令,以光标所在位置为基准,如果希望向前搜索,则将要搜索的字符串放在两个“?”之间;如果希望向后搜索,则将要搜索的字符串置于两个“/”之间。
找到第一个匹配结果之后,按 n 会将光标移动到下一个匹配结果处,按 N 则会将光标移动到前一个匹配结果处。
如果想要搜索仅在行首出现的字符串,在其前面加上特殊符号“^”即可;如果想要搜索仅在行尾出现的字符串,在其后面加上特殊符号“$”即可;如果想要搜索在 Vim 中具有特殊功能的字符(如 ^、$、*、/ 和 .),则应该在这些特殊字符前面加上转义字符“\”。
应用实例:
1、向后搜索,将光标移到下一个包含字符串 str 的行
:/str/
2、向前搜索,将光标移到下一个包含字符串 str 的行
: ?str?
3、向后搜索,并将第一个包含字符串 str 的行写入 file 文件
:/str/w file
4、向前搜索,并将包含字符串 str1 的行至包含字符串 str2 的行写入 file 文件
:/str1/,/str2/w file
5、向后搜索,将光标移到下一个包含字符 “/” 的行
:/\//
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。