Vim使用進階

http://blog.csdn.net/han_xiaoyang/article/details/13510759


作爲一個使用vim挺長時間的人,現在來寫這篇東西確實是尷尬的,就像很多大神們說的,vim是世界上最好用的編輯器,沒有之一。然後前兩天又重新看了看vim的那些功能和使用方法,更覺得這麼長時間使用vim卻遠沒有用到它的強大之處。所以這裏對常用的vim功能和用法做一個總結,自己時常也能翻看熟悉一下。

    看過學習vim使用方法的幾條建議,也一併寫來警示一下自己吧:學習vim在開始時是痛苦的;需要時間和不斷地練習,就像你學習一個樂器一樣;不要期望你能在3天內把vim練得比別的編輯器更有效率(像博主這種應該需要兩週以上的苦練)。

    首先需要說明一下的是,vim有四種基本模式:

        1)命令行模式:鍵入的內容被解釋爲命令。

        2)插入模式:鍵入的內容被插入文件。

        3)可視模式:通過鍵盤選擇、剪切、複製文本。

        4)Ex 模式:使用更多命令(例如:存儲文件、替換文本等)。

    博主最先接觸vim的時候,也試圖像其他的編輯器一樣使用,即進入到插入模式後進行笨拙的操作。而事實上,vim真正強大和快速的地方在於其命令行模式。在真正熟練vim之後會發現,使用插入模式的時間越來越少,而越來越傾向於使用便捷的命令行模式。

一、關於打開關閉和模式切換

    可以通過以下命令啓動Vim:

    $ vim test.txt

    然後文檔被打開了,但還不能進行編輯,此時 Vim 處在命令行模式。該模式下可以使用鍵盤執行 Vim 命令。

    要插入文本,將光標定位至插入位置(下幾節中會說明高效的光標定位方法),然後按 i 進入插入模式。

    按 Esc 即可返回命令行模式。

    編輯完畢後輸入:wq再回車可以保存退出,或者:q!可以不保存退出。

    在命令行模式下,有以下一些值得注意的地方:

        1):e <path/to/file>  →打開一個文件

        2):w  →存盤

        3):saveas <path/to/file>  →另存爲 <path/to/file>

        4):x, ZZ 或 :wq →保存並退出 (:x 表示僅在需要時保存,ZZ不需要輸入冒號並回車)

        5):q! →退出不保存 :qa! 強行退出所有的正在編輯的文件,就算別的文件有更改。

        6):bn 和 :bp  →在同時打開很多文件時,可通過這兩個命令來切換下一個或上一個文件。

二、關於光標移動

    Vim 中的確可以使用←↓↑→移動光標,不管是命令行模式下還是插入模式下,然而Vim非常不鼓勵大家這麼做。因爲這樣你需要把右手從字母區移動到方向鍵,嚴重影響效率。

    強烈建議使用hjkl 來移動光標,一個簡單的記憶方法是j 就像一個下垂的鉤子,是向下移動的。

    另外一些在命令行模式下常用的光標移動基本方法包括:

        1)0 → 數字零,到行頭

        2)^ → 到本行第一個不是blank字符的位置(所謂blank字符就是空格,tab,換行,回車等)

        3)$ → 到本行行尾

        4)g_ → 到本行最後一個不是blank字符的位置。

        5)/pattern → 搜索 pattern 的字符串(陳皓注:如果搜索出多個匹配,可按n鍵到下一個)

    還有一些用熟練之後很強大的光標定位功能:

        1)NG  →到第 N 行,注意G是大寫的

        2)gg  →到第一行。

        3)G  →到最後一行。

        4)w →到下一個單詞的開頭。

        5)e →到下一個單詞的結尾。

        6)% : 匹配括號移動,包括小中大括號(需要把光標先移到括號上)

        7)*和#: 匹配光標當前所在的單詞,移動光標到下一個(或上一個)匹配單詞(*是下一個,#是上一個)

        8)fx:移動光標到當前行的下一個 x 處。x 可以是任意一個字母。

        9)tx:和上面的命令類似,但是是移動到 x 的左邊一個位置。

        10)Fx:和 fx 類似,不過是往回找。

三、刪除、撤銷與恢復

    1)x  →刪除光標所在處的字符(X 刪除光標前的字符)。

    2)d  →代表你將要刪除一些內容,在按下 d 之後,搭配移動光標的命令,可指定需要刪除的內容。(dW 可以刪除至下一個單詞,d^ 可以刪至行首)

    3)dd  →刪除整行。

    4)cw  →刪除並替換當前單詞。

    5)u  →命令行模式下撤銷上一個命令

    6)Ctrl+r  →恢復之前撤銷的命令。

四、關於可視模式

    命令行模式按 v 進入可視模式,該模式下會高亮一些文本,可以通過光標移動選擇文本。選定後按 y 可以複製文本,c 可以剪切。之後可以使用 p 在光標後粘貼,P 在光標前。

    V 是行選取模式,以行爲單位進行選取。

    Ctrl+v是塊選取模式,可以選取一塊矩形區域中的文本。

五、快速移動大段文字

    在很明確的知道想拷貝或者剪切什麼,其實無需進入可視選擇模式。在命令行模式下使用一些快捷操作可以節省更多時間:

    1)d{motion}  →剪切 motion 命令跨過的字符到剪貼板。比如,dw 會剪切一個詞而 dfS 會將從當前光標到下一個 S 之間的字符剪切至剪貼板。

    2)y{motion}  →和上面類似,不過是拷貝。

    3)c{motion}  →和 d{motion} 類似,不過最後進入插入模式。

    4)dd  →剪切當前行。

    5)yy  →拷貝當前行。

    6)cc  →剪切當前行並且進入插入模式。

    7)D  →剪切從光標位置到行尾到剪貼板。

    8)Y  →拷貝當前行。

    9)C  →和 D 類似,最後進入插入模式。

    10)x  →剪切當前字符到剪貼板。

    11)s  →和x類似,不過最後進入插入模式。

    12)p  →粘貼

    13)N<command>  →重複某個命令N次

六、關於搜索和替換

    Vim中有類似正則表達式的搜索查找功能,非常好用。命令行模式下,按下 /,輸入搜索內容,按下回車即可。n 查找下一處匹配,N 查找上一處。

    替換文本需要使用 :s/命令(注意冒號),格式爲:[範圍]s/[原字符串]/[新字符串]/[參數]。

命令

作用

 :s/xxx/yyy/

將當前行中的第一個「xxx」替換爲「yyy」

 :s/xxx/yyy/g

將當前行中的所有「xxx」替換爲「yyy」

 :s/xxx/yyy/gc

同上,但每次替換都會詢問

 :%s/xxx/yyy/g

將整個文件中的所有「xxx」替換爲「yyy」

    可以用 :g/ 命令匹配字符串(注意冒號),並對每個匹配執行同一操作。格式爲:[範圍]:g/[模式串]/[命令]。例如:

命令

作用

 :g/^#/d

刪除所有以「#」打頭的行

 :g/^$/d

刪除所有空行


    看過一個總結的很好的思維導圖,整張圖放在這裏看不清,因此按照不同的操作類型拆分成多張圖,列在下面了:








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章