天天看點

vim編輯器詳解

vi:Visual Interface

vim: vi  iMproved

vim是一種全屏編輯器,也是一種模式化編輯器

vim模式:

    編輯模式(指令模式)

    輸入模式

    末行模式

模式轉換:預設是在指令模式下

    指令-->輸入:

        i:在目前光标所指字元的前面插入,轉為輸入模式

        a:在目前光标所指字元的後面插入,轉為輸入模式

        o:在目前光标所指行下方,建立一行,并轉為輸入模式:

        I:在目前光标所在行的行首,轉為輸入模式

        A:在目前光标所在行的行尾,轉為輸入模式

        O:在目前光标所指行上方,建立一行,并轉為輸入模式

    輸入/末行-->編輯

        ESC或者ESC+ESC(有時候需要兩個)

    編輯-->末行

        輸入 :即可

一、打開檔案:

    vim /path/to/somefile

        vim +#:打開檔案,并定位到第#行

        vim +:打開檔案,定位到最後一行

        vim +/pattern:打開檔案,并定位到第一次被parttern比對到的行

二、關閉檔案

    末行模式下:

        :q  退出但是不儲存

        :w  儲存

        :wq 儲存并退出  --> 等價于:x

        :q!不儲存并退出

        :w!強行儲存

    編輯模式下:

        ZZ:儲存并退出

三、移動光标(編輯模式)

    逐字元移動:

        h:左

        j:下

        k:上

        l:右

        #h:移動#個字元

    以單詞為機關移動

        w:移動至下一個單詞的詞首

        e:跳至目前或下一個單詞的詞尾

        b:跳至目前或前一個單詞的詞首

        #w:移動#個單詞

    行内跳轉:

        0:跳至絕對行首

        ^:行首的第一個非空白字元前面

        $:絕對行尾

    行間跳轉

        #:從目前位置往下跳轉#行,如果目前位置離行尾小于#行,則跳至行尾

        #G:跳轉至第#行

        G:最後一行

        末行模式下,直接給出行号即可

四、翻屏

    Ctrl+f:向下翻一屏  (為了友善記憶可以把f當成forward)

    Ctrl+b:向上翻一屏    (backward)

    Ctrl+d:向下翻半屏    (down)

    Ctrl+u:向上翻半屏    (up)

五、删除單個字元

    x:删除光标所在處的單個字元

    #x:删除光标所在處以及向後的共#個字元

六、删除指令:d

    d指令跟跳轉指令組合使用:

        #dw,#e,#db  

    dd:删除目前光标所在行

    #dd:删除目前光标以及向下共#行

    末行模式下:

        startline,endlined

        .:表示目前行

        $:表示最後一行

        +#:向下的#行

七、粘貼,指令 p

    p:如果删除或複制為整行内容,則粘貼至光标所在行下方,如果非整行,則粘貼至光标所在字元後面

    P:如果删除或複制為整行内容,則粘貼至光标所在行上方,如果非整行,則粘貼至光标所在字元前面

八、複制指令y

    用法同d

九、修改:先删除内容,再轉化為輸入模式

     c:用法同d

十、替換:r

    R:替換模式

十一、撤銷前一次的編輯操作u

    u:撤消前一次的編輯操作

        連續u指令可以撤消此前的n次操作

    #u:直接撤消最近#次操作

十二、重複前一次編輯操作

    .

十三、可視化模式

    v:按字元選取

    V:按矩形選取

十四、查找

    /pattern

    ?pattern

        n:向下查找

        N:向上查找

十五、查找并替換

在末行模式下使用s指令

    ADDR1,ADDR2s/pattern/string/gi

    1,$

    % : 表示全文

十六、使用vim編輯多個檔案

    vim file1 file2 file3

        :next  切換至下一個檔案

        :prev  切換至前一個檔案

        :last  切換至最後一個檔案

        :first 切換至第一個檔案

退出

    :qa 全部退出

十七、分屏顯示一個檔案

    Ctrl+w,s:水準拆分視窗

    Ctrl+w,v:垂直拆分視窗

在視窗間切換光标

    ctrl+w,arrow(即方向鍵)

    (摁鍵方法是先ctrl+w連按,然後再單嗯w、v...)

:qa 關閉所有視窗

十八、分視窗多個檔案

vim  -o:水準分割顯示

vim  -O:垂直分割顯示

十九、将目前檔案中部分内容另存為另外一個檔案

:w

:add1,add2w  /path/to/file

二十、将另外一個檔案的内容填充在目前檔案中

:r  /path/to/somefile

二十一、和shell互動

:! COMMAND

二十二、進階話題

    顯示或取消顯示行号

    :set  number

    :set  nonu (指令可縮寫,隻要唯一)

    顯示忽略或區分字元大小寫

    :set ignorecase

    :set  noic

    設定自動縮進

    :set autoindent

    :set noai

    查找到的文本高亮顯示或取消

    :set hlsearch    

    :set nohlsearch

    文法高亮

    :syntax on

    :syntax off

二十三、配置檔案

/etc/vimrc

~/.vimrc

二十四、如果不正常退出或者多人同時編輯會出現類似以下提示:

E325: ATTENTION

Found a swap file by the name ".my.cnf.swp"

          owned by: root   dated: Thu Jan 14 15:31:21 2016

         file name: /tmp/my.cnf

          modified: no

         user name: root   host name: logstash

        process ID: 3055 (still running)

While opening file "my.cnf"

             dated: Thu Jan 14 10:44:10 2016

(1) Another program may be editing the same file.  If this is the case,

    be careful not to end up with two different instances of the same

    file when making changes.  Quit, or continue with caution.

(2) An edit session for this file crashed.

    If this is the case, use ":recover" or "vim -r my.cnf"

    to recover the changes (see ":help recovery").

    If you did this already, delete the swap file ".my.cnf.swp"

    to avoid this message.

此時隻要删除檔案所在目錄下檔案名格式為  .filename.swp 的檔案即可。filename指正在編輯的檔案名。  

本文轉自biao007h51CTO部落格,原文連結:http://blog.51cto.com/linzb/1734609 ,如需轉載請自行聯系原作者