以下是按照功能分類的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”會恢復修改。