剪切与粘贴/删除文字
- “:指定一个任何命令使用的缓存。在”之后输入一个字母或数字,它们会对应一个缓存。
- 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”会恢复修改。