以下是按照功能分类的VI命令的一个总结列表。有可能还会有其它命令,可以查看VI的在线手册。为了方便,你可以以文本文件方式保存该文件,然后删除你认为自己不会用的一些命令,并打印出剩下的较短的文件。
剪切与粘贴/删除文字
* “:指定一个任何命令使用的缓存。在”之后输入一个字母或数字,它们会对应一个缓存。
* D:从当前光标所在位置向后删除直到行尾。
* P:在当前光标位置或行之前粘贴专门的缓存。如果没有指定缓存(使用”命名),“P”就使用通用缓存。
* X:删除光标之前的字符。
* Y:将当前行整形到指定的缓存。如果没有指定缓存,就使用通用缓存。
* d:删除,直到where。“dd”删除当前行。一个数字就表示删除那么多行。被删除的内容放置在由”命令指定的缓存中。如果没有指定缓存,就使用通用缓存。
* p:在当前光标位置或行之后粘贴专门的缓存。如果没有指定缓存(使用”命名),“p”就使用通用缓存。
* x:删除光标之下的字符。输入一个数字表示要删除多少字符。被删除的字符位于光标之后。
* y:整形,将结果放到一个缓存中。“yy”整形当前行。输入一个数字表示要整形的行数。可以用”命令来指定缓存。如果没有指定缓存,就使用通用缓存。
插入新的文字
* A:在当前行之后追加。
* I:在一行的开头处插入。
* O:在当前光标位置的上面一个新行进入插入模式。
* a:进入插入模式,输入的字符会在当前光标位置之后插入。如果在命令之前输入一个数字,那么会插入内容多次。
* i:进入插入模式,输入的字符会在当前光标位置之前插入。如果在命令之前输入一个数字,那么会插入内容多次。
* o:在当前光标位置之下的一个新行进入插入模式。
在文件内移动光标
* ^B:向后回滚一页。输入数字就会回滚那么多页。
* ^D:向前滚动半个窗口。输入数字会滚动那么多行。
* ^F:向前滚动一页。输入数字会滚动那么多页。
* ^H:将光标向左移动一个空格。输入数字会移动那么多个空格。
* ^J:在同一列向下移动光标一行。输入数字会向下移动那么多行。
* ^M:移动到下一行的第一个字符处。
* ^N:在同一列向下移动光标一行。输入数字会向下移动那么多行。
* ^P:在同一列向上移动光标一行。输入数字会向上移动那么多行。
* ^U:向后回滚半个窗口。输入数字会回滚那么多行。
* $:将光标移动到当前行的末尾。输入数字会移动到下面行的末尾。
* %:将光标移动到匹配的括号处。
* ^:将光标移动到第一个非空白的字符处。
* (:将光标移动到一个句子的开头。
* ):将光标移动到下一个句子的开头。
* {:将光标移动到前一个段落。
* }:将光标移动到下一个段落。
* |:将光标移动到指定的列(由count指定)。
* +:将光标移动到下一行的第一个非空白字符处。
* -:将光标移动到之前一行的第一个非空白字符处。
* _:将光标移动到当前行的第一个非空白字符处。
* 0:将光标移动到当前行的第一列。
* B:将光标回移一个字,跳过punctuation。
* E:将光标向前移动到一个字的结尾,跳过punctuation。
* G:跳到由count指定的行处。如果没有指定数目,就跳转到文件的末尾。
* H:将光标移动到屏幕顶端的第一个非空白字符处。
* L:将光标移动到屏幕底端的第一个非空白字符处。
* M:将光标移动到屏幕中间的第一个非空白字符处。
* W:将光标向前移动到一个字的开头,跳过punctuation。
* b:将光标回移一个字。如果光标在字的中间,就将光标移动到那个字的第一个字符处。
* e:将光标前移一个字。如果光标在字的中间,就将光标移动到那个字的最后一个字符处。
* h:将光标向左移动一个字符的位置。
* j:将光标向下移动一行。
* k:将光标向上移动一行。
* l:将光标向右移动一个字符的位置。
* w:将光标向前移动一个字。如果光标在字的中间,就将光标移动到下一个字的第一个字符处。
在屏幕上移动光标
* ^E:向前滚动一行。用count指定滚动的行数。
* ^Y:向后滚动一行。用count指定滚动的行数。
* z:用以下选项重画屏幕。“z”将当前行放到屏幕的顶部;“z.”将当前行放到屏幕的中间;“z-”将当前行放到屏幕的底部。如果你在“z”命令之前指定一个数字,它就将当前行变到指定的行处。例如,“16z.”将第16行放到屏幕的中间。
替换文字
* C:从当前光标位置处变到行的结尾。
* R:用输入的一系列字符(以Esc键结尾)替换屏幕上的字符。S:改变一整行。
* c:改变直到。“cc”改变当前行。用count指定改变的行数。
* r:替换光标下的一个字符。用count指定替换的字符数。
* s:替换(Substitute)光标下的一个字符,并进入插入模式。用count指定替换的字符数。在最后一个替换的字符处放一个美元($)符号。
搜索文字或字符
* ,:在相反方向上重复上一个f,F,t或T命令。
* /:在文件里向下搜索/之后的字符串。
* ;:重复上一个f,F,t或T命令。
* :在文件里向上搜索之后的字符串。
* F:在当前行向后搜索“F”命令指定的字符。如果找到了,就将光标移动到那个位置。
* N:重复由“/”或“”给出的搜索,不往相反方向搜索。
* T:在当前行向后搜索“F”命令指定的字符。如果找到了,就移动到那一列。
* f:在当前行搜索“f”命令之后指定的字符。如果找到了,就将光标移动到那个位置。
* n:重复上一个“/”或“”搜索。
* t:在当前行搜索“t”命令之后指定的字符。如果找到了,就将光标移动到那个字符位置之前的一列。
操纵字符/行格式
* ~:转换光标之下的字符事例(Switch the case of thecharacter under the cursor)。
* <:Shift the lines up towhere to the left by one shiftwidth. “<<” shifts the currentline to the left,and can be specified with a count。
* >:Shift the lines up towhere to the right by one shiftwidth. “>>” shifts the currentline to theright, and can be specified with a count。
* J:将当前行和下一行合并起来。用count指定合并的行数。
保存与退出
* ^\:退出“VI”模式,进入“EX”模式。EX编辑器是行编辑器,VI就是建立在其上的。重新进入VI的EX命令是“:vi”。
* Q:退出“VI”模式,进入“EX”模式。ex编辑器是一个逐行(line-by-line)编辑器。重新进入VI的EX命令是“:vi”。
* ZZ:退出编辑器,如果有任何改动就保存。
其它一些指令
* ^G:显示当前的文件名和状态。
* ^L:清除并重画屏幕。
* ^R:重画屏幕并移除假的行。
* ^[:退出键。取消部分形成的命令。
* ^^:回到上次编辑的文件处。
* !:执行一个shell。如果指定了a,使用!执行的程序将特定的行作为标准输入,同时也会替换带执行程序的标准输出的那些行。“!!”将当前行作为输入来执行一个程序。例如,“!4jsort”会从当前光标位置拿掉五行并执行sort。在键入命令之后,会有一个你可以输入命令的单独的exclamation点。
* &:重复之前的“:s”命令。
* .:重复最后一次修改文件的那个命令。
* ::开始输入一个EX编辑器命令。当用户输入回车的时候,此命令马上执行。
* @:输入在特定缓存中存储的命令。
* U:将当前行恢复到光标进入行之前的状态。
* m:用“m”命令之后的特定字符来标记当前位置。
* u:撤销对文件所作的最后一次修改。再次输入“u”会恢复修改。