天天看點

Vim的幾種模式介紹

http://zh.wikipedia.org/wiki/Vim#.E6.99.AE.E9.80.9A.E6.A8.A1.E5.BC.8F

模式

從vi演生出來的Vim具有多種模式,這種獨特的設計容易使初學者産生混淆。幾乎所有的編輯器都會有插入和執行指令兩種模式,并且大多數的編輯器使用了與Vim截然不同的方式:指令目錄(滑鼠或者鍵盤驅動),組合鍵(通常通過control鍵(CTRL)和alt鍵(ALT)組成)或者滑鼠輸入。Vim和vi一樣,僅僅通過鍵盤來在這些模式之中切換。這就使得Vim可以不用進行菜單或者滑鼠操作,并且最小化組合鍵的操作。對文字錄入員或者程式員可以大大增強速度和效率。

Vim具有6種基本模式和5種派生模式。

[編輯]基本模式

[編輯]普通模式

在普通模式中,使用者可以執行一般的編輯器指令,比如移動光标,删除文本等等。這也是Vim啟動後的預設模式。這正好和許多新使用者期待的操作方式相反(大多數編輯器預設模式為插入模式)。

Vim強大的編輯能力中很大部分是來自于其普通模式指令。普通模式指令往往需要一個操作符結尾。例如普通模式指令"dd"删除目前行,但是第一個"d"的後面可以跟另外的移動指令來代替第二個"d",比如用移動到下一行的"j"鍵就可以删除目前行和下一行。另外還可以指定指令重複次數,"2dd"(重複"dd"兩次),和"dj"的效果是一樣的。使用者學習了各種各樣的文本間移動/跳轉的指令和其他的普通模式的編輯指令,并且能夠靈活組合使用的話,能夠比那些沒有模式的編輯器更加高效的進行文本編輯。

在普通模式中,有很多方法可以進入插入模式。比較普通的方式是按"a"(append/追加)鍵或者"i"(insert/插入)鍵。

[編輯]插入模式

在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新使用者希望文本編輯器編輯過程中一直保持這個模式。

在插入模式中,可以按ESC鍵回到普通模式。

[編輯]可視模式

這個模式與普通模式比較相似。但是移動指令會擴大高亮的文本區域。高亮區域可以是字元、行或者是一塊文本。當執行一個非移動指令時,指令會被執行到這塊高亮的區域上。Vim的"文本對象"也能和移動指令一樣用在這個模式中。

[編輯]選擇模式

這個模式和無模式編輯器的行為比較相似(Windows标準文本控件的方式)。這個模式中,可以用滑鼠或者光标鍵高亮選擇文本,不過輸入任何字元的話,Vim會用這個字元替換選擇的高亮文本塊,并且自動進入插入模式。

[編輯]指令行模式

在指令行模式中可以輸入會被解釋成并執行的文本。例如執行指令(":"鍵),搜尋("/"和"?"鍵)或者過濾指令("!"鍵)。在指令執行之後,Vim傳回到指令行模式之前的模式,通常是普通模式。

[編輯]Ex模式

這和指令行模式比較相似,在使用":visual"指令離開Ex模式前,可以一次執行多條指令。

[編輯]衍生模式

[編輯]操作符等待模式

這個派生模式指普通模式中,執行一個操作指令後Vim等待一個"動作"來完成這個指令。Vim也支援在操作符等待模式中使用"文本對象"作為動作,包括"aw"一個單詞(a word)、"as"一個句子(a sentence)、"ap"一個段落(a paragraph)等等。

比如,在普通模式下"d2as"删除目前和下一個句子。在可視模式下"apU"把目前段落所有字母大寫。

[編輯]插入普通模式

這個模式是在插入模式下按下ctrl-o鍵的時候進入。這個時候暫時進入普通模式,執行完一個指令之後,Vim傳回插入模式

[編輯]插入可視模式

這個模式是在插入模式下按下ctrl-o鍵并且開始一個可視選擇的時候開始。在可視區域選擇取消的時候,Vim傳回插入模式。

[編輯]插入選擇模式

通常這個模式由插入模式下滑鼠拖拽或者shift方向鍵來進入。當選擇區域取消的時候,Vim傳回插入模式。

[編輯]替換模式

這是一個特殊的插入模式,在這個模式中可以做和插入模式一樣的操作,但是每個輸入的字元都會覆寫文本緩沖中已經存在的字元。在普通模式下按"R"鍵進入。