天天看點

vim編輯器

一、簡介

   1.vi:Visual Interface,是一種文本編輯器,所謂文本資料是基于字元編碼的檔案,常見的編碼有ASCII編碼,UNICODE編碼等等。

   2.Vim是從vi發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等友善程式設計的功能特别豐富,在程式員中被廣泛使用。和Emacs并列成為類Unix系統使用者最喜歡的編輯器。

    3.Vim的第一個版本由布萊姆·米勒在1991年釋出。最初的簡稱是ViIMitation,随着功能的不斷增加,正式名稱改成了Vi IMproved。現在是在開放源代碼方式下發行的自由軟體。

二、文本編輯器的種類

    1.行編輯器:所謂行編輯器是指一行一行來編輯處理的工具,如sed。

    2.全屏編輯器:編輯空間占據整個螢幕,如nano,vi。

三、vim的使用

    1.打開檔案

    2.文法:vim [OPTION]... [FILE]...

    3.vim有以下幾種打開方式:

                ①vim +#(後接數字):打開檔案後,直接讓光标處于第#行的行首;例如:vim +3 /etc/passed;

                ②vim +/PATTERN(正規表達式):打開檔案後,直接讓光标處于第一個被PATTERN比對到的行的行首;例如:vim +/^U /etc/fstab;

                ③vim + file:直接打開file,光标在最後一行;例如:vim + /etc/fstab;

                ④vim -b file:二進制方式打開檔案;例如:vim -b /bin/cat;

                ⑤vim -d file1 file2...:比較多個檔案

                ⑥vim -m file:隻讀方式打開檔案;例如:vim -m /etc/fstab;

    4.如果該檔案存在,檔案被打開并顯示内容;如果該檔案不存在,當編輯後第一次存盤時建立它;

四、vim是一個模式編輯器

    1.vim三種主要模式:

        指令模式(預設):移動光标,剪切/粘貼文本;

        插入模式(編輯):修改文本;

        擴充指令模式:儲存,退出等;

    2.Esc鍵:可以從插入模式轉換到指令模式

五、模式轉換

    1.從指令模式----->插入模式,可使用以下指令:

        i:在目前光标所在處前面輸入;

        I:在目前光标所在行的行首輸入;

        a:在目前光标所在處後面輸入;

        A:在目前光标所在行的行尾輸入;

        o:在目前光标所在行的下方打開一個新行;

        O:在目前光标所在行的上方打開一個新行;

    2.從插入模式----->指令模式:Esc鍵;

    3.指令模式----->擴充模式:直接輸入冒号(:)即可在視窗左下方顯示冒号;

    4.從擴充模式---->指令模式:Esc鍵;

    5.鎖定和解鎖:ctrl+s,ctrl+q;

六、退出檔案

    1.擴充模式:

        :q 退出;

        :q! 不儲存退出;

        :wq 儲存退出;

        :x 儲存退出;

        :wq! 強制儲存退出;

    2.指令模式

        ZZ:儲存退出;

        ZQ:不儲存退出;

七、擴充模式

    1.按冒号(:)進入擴充模式:

        r filename:讀檔案内容到目前檔案中;例如 :r /etc/issue;

        w filename:将目前檔案内容寫入另一個檔案;例如:w /testdir/f1;

        !command:執行指令;例如:!ls;

        r!command:讀入指令的輸出;例如:r!ls /root;

八、指令模式光标跳轉

    1.字元間跳轉:

        h:左

        l:右

        K:上

        j:下

        #command:跳轉由#指定的個數的字元;例如:#h,#k;

    2.單詞間跳轉:

        w:下一個單詞的詞首;

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

        b:目前單詞或前一個單詞詞首;

        #command:由#指定一次跳轉的單詞數;例如:3w,3e;

    3.目前頁跳轉:

        H:頁首;

        M:頁中間行;

        L:頁底;

    4.行首行尾跳轉:

        ^:跳轉至行首的第一個非空白字元;

        0:跳轉至行首;

        $:跳轉至行尾;

    5.行間移動:

        #G:直接跳轉至第#行;

        G:最後一行;

        1G,gg:第一行;

    6.句子間移動:

        ):下一句;

        (:上一句;

    7.段落間移動:

        }:下一段;

        {:上一段;

九、指令模式翻屏操作

        ctrl+f:向檔案尾部翻一屏;

        ctrl+b:向檔案首部翻一屏;

        ctrl+d:向檔案尾部翻半屏;

        ctrl+u:向檔案首部翻半屏;

十、指令模式操作

    1.字元編輯:

        x:删除光标處字元;

        #x:删除光标處起始的#個字元;

        xp:交換光标所在處的字元及其後面字元的位置;

        ~:轉換大小寫;

    2.替換指令:

        r:替換光标所在處字元;

        R:切換成REPLACE模式;

    3.删除指令:

        d:删除指令,可結合光标跳轉字元,實作範圍删除;

        d$:删除到行尾;

        d^:删除到非空行首;

        d0:删除到行首;

        dw:删除到下一個單詞的詞首;

        de:删除到目前單詞或下一單詞的詞尾;

        db:删除到目前單詞或前一單詞的詞首;

        #command:删除多個單詞;

        dd:删除光标所在的行;

        #dd:多行删除;

        D:從目前光标位置一直删除到行尾,留白行,等同于d$;

    4.複制指令:

        y:複制,可結合光标跳轉字元,實作範圍複制;

        y$:複制到行尾;

        y0:複制到行首;

        y^:複制到非空行首;

        ye:複制到目前單詞或下一單詞的詞尾;

        yw:複制到下一個單詞的詞首;

        yb:複制到目前單詞或前一單詞的詞首;

        #command:複制多個單詞;

        yy:複制行;

        #yy:複制多行;

        Y:複制整行;

    5.粘貼指令:

        p:緩沖區存的如果為整行,則粘貼目前光标所在行的下方;否則,則粘貼至目前光标所在處的後面;

        P:緩沖區存的如果為整行,則粘貼目前光标所在行的上方;否則,則粘貼至目前光标所在處的前面;

    6.改變指令:

        c:修改,可結合光标跳轉字元,實作範圍修改;所謂修改就是先删除,再轉換為插入模式;

        c$:删除到行尾;

        c^:删除到非空行首;

        c0:删除到行首;

        cb:删除到目前單詞或前一單詞的詞首;

        ce:删除到目前單詞或下一單詞的詞尾;

        cw:删除到下一個單詞的詞首;

        #command:删除多個單詞

        cc:删除目前行并輸入新内容;

        #cc:删除多行

        C:删除目前光标到行尾,并切換成插入模式

    7.100iwu [Esc]:含義是粘貼“wu”100次;

    8.文法:<start position> <command> <end position>

        Command:

            y:複制

            d:删除

            gU:變大寫

            gu:變小寫

        例如:0y$指令含義是:

            0:跳到行首

            y:從這裡開始複制

            $:複制到本行最後一個字元

十一、擴充模式

    1.位址定界

        :start_pos,end_pos

        #:具體第#行,例如2表示第2行;

        #,#:從左側#表示行起始,到右側#表示行結尾;

        #,+#: 從左側#表示的行起始,加上右側#表示的行數;例如:2,+3表示2到5行;

        .:目前行;

        $:最後一行;

        .,$-1:目前行到倒數第二行;

        %:全文,相當于1,$;

        /pat1/,/pat2/:從第一次被pat1模式比對到的行開始,一直到第一次被 pat2比對到的行結束;

        #,/pat/:

        /pat/,$:

    使用方式:後跟一個編輯指令:

        d:删除

        y:複制

        w file:将範圍内的行另存至指定檔案中;

        r file: 在指定位置插入指定檔案中的所有内容;

    2.查找:

        /PATTERN:從目前光标所在處向檔案尾部查找;

        ?PATTERN:從目前光标所在處向檔案首部查找;

        n:與指令同方向;

        N:與指令反方向;

    3.查找并替換:

        s:在擴充模式下完成查找替換操作;

        格式:s/要查找的内容/替換為的内容/修飾符;

        要查找的内容:可使用模式;

        替換為的内容:不能使用模式,但可以使用\1, \2, ... 等後向引用符号;還可以使用“&”引用前面查找時查找到的整個内容;

        修飾符:;

            i: 忽略大小寫

            g: 全局替換;預設情況下,每一行隻替換第一次出現;

            gc:全局替換,每次替換前詢問;

    注:查找替換中的分隔符/可替換為其它字元,例如:

        s@/etc@/var@g; 

        s#/boot#/#i;

十二、指令模式

    1.撤銷更改:

        u:撤銷最近的更改;

        #u:撤銷之前多次更改;

        U:撤消光标落在這行後所有此行的更改;

        ctrl+r:重做最後的“撤消”更改 ;

        .:重複前一個操作;

        n.:重複前一個操作n次;

十三、vim的寄存器

    1.有26個命名寄存器和1個無命名寄存器,常存放不同的 剪貼版内容,可以不同會話間共享。

    2.用a,b,…,z表示,用“寄存器表示,放在數字和指令之間;

            如:3"tyy 表示複制3行到t寄存器中 ;

                "tp  表示将t寄存器内容粘貼;

    3.未指定,将使用無命名寄存器;

    4.有10個數字寄存器,用0,1,…,9表示,0存放最近複制内容,1存放最近删除内容。當新的文本變更和删除時,1轉存到2,2轉存到3,以此類推。數字寄存器不能在不同會話間共享。

十四、vim編輯二進制檔案

    步驟:

        1.以二進制方式打開檔案:

                vim -b binaryfile

        2.擴充指令模式下,利用xxd指令轉換為可讀的十六進制:

                :%!xxd 

        3.編輯二進制檔案;

        4.擴充指令模式下,利用xxd指令轉換回二進制:

                :%!xxd –r 

        5.儲存退出;

十五、可視化模式

    1.允許選擇的文本塊:

            v:面向字元;

            V:面向行;

            ctrl+v:面向塊;

    2.可視化鍵可用于與移動鍵結合使用: 

            w, ) , } ,箭頭等;

    3.突出顯示的文字可以被删除,複制,變更,過濾,搜尋/替換等;       

十六、多檔案模式

    1.格式:vim file1 file2 file3 ...

        :next 下一個檔案;

        :prev 前一個檔案;

        :first 第一個檔案;

        :last 最後一個檔案;

        :wall 儲存所有;

        :qwall 退出所有;

        :wqall 儲存所有檔案并退出;

十七、使用多個視窗

    1.多檔案分割:

         格式:vim -o|-O FILE1 FILE2 ...

         -o:水準分割;

         -O:豎直分割;

        在視窗間切換:ctrl+w,arrow(上下左右方向鍵)

    2.單檔案視窗分割:

        ctrl+w,s: split,水準分割; 

        ctrl+w,v: vertical,垂直分割; 

        ctrl+w,q:取消相鄰視窗; 

        ctrl+w,o:取消全部視窗;

        :wqall 退出;

十八、定制vim的工作特性

        1.配置檔案:

            全局:/etc/vimrc 

            個人:~/.vimrc 

        2.擴充模式:隻對目前vim程序有效:

            (1)行号

                顯示:set nu;

                取消顯示:set nonu;

            (2)括号成對比對

                比對:set sm;

                取消:set nosm;

            (3)自動縮進

                啟用:set ai;

                禁用:set noai;

            (4)高亮搜尋

                啟用:set hlsearch;

                禁用:set nohlsearch;

            (5)文法高亮

                啟用:syntax on;

                禁用:syntax off;

            (6)忽略字元大小寫

                啟用:set ic;

                禁用:ser noic;

            (7)檔案格式

                啟用Windows格式:set fileformat=dos;

                啟用Unix格式:set fileformat=unix;

            (8)設定文本寬度

                :set textwidth=65

                :set wrapmargin=15 

        3.vim内置幫助

            (1):help

            (2)Use :q to exit help  

        4.vimtutor(使用手冊)  

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