linux7-vim

一、vim/vi快捷鍵、

    大小寫切換:
        shift+字母      強(qiáng)烈推薦
        caps lock+字母  

    vi命令:  功能強(qiáng)大文本編輯器(Unix/Linux)  vim等都是對vi的加強(qiáng)版
    1)關(guān)注三種模式:如何切換
                  回車                            i(光標(biāo)當(dāng)前位)   a(光桿右邊1位)   o(光標(biāo)下一行)    O(光標(biāo)上一行)
        底行模式(冒號模式)  ---->   命令模式   --I-->    輸入模式
        底行模式(冒號模式)  <--:--   命令模式   <--Esc--  輸入模式
          
                    :  /  ?                  Esc 

    2)常用的操作命令:
        操作模式
            命令模式:               ctr+c 或者esc 
            冒號模式(底行模式):       ctr+c+: 或者esc+:
            編輯模式:
                (通常使用i,以下命令執(zhí)行后,會(huì)自動(dòng)進(jìn)入編輯模式)               
                                    i,在當(dāng)前位置前插入;
                                    I,在當(dāng)前行首插入;
                                    a,在當(dāng)前位置后插入;
                                    A,在當(dāng)前行尾插入;
                                    o,在當(dāng)前行之后插入一行;
                                    O,在當(dāng)前行之前插入一行;

                                    s   刪除當(dāng)前字符,光標(biāo)定位當(dāng)前位置
                                    S  刪除當(dāng)前行,光標(biāo)定位當(dāng)前行首

                                    c 無效果
                                    C 刪除光標(biāo)至行尾

                                    r,用新輸入的一個(gè)字符替換當(dāng)前一個(gè)字符;
                                    R,從當(dāng)前字符開始往后一個(gè)一個(gè)字符替換為新輸入的字符;

            在輸入命令時(shí)的操作
                ctr+a       光標(biāo)移動(dòng)到 行首
                ctr+e       光標(biāo)移動(dòng)到 行尾

                ctr+a+k   刪除全部輸入



        光標(biāo)移動(dòng)
                  O
               i  光標(biāo) a
                  o          變?yōu)檩斎肽J?,光?biāo)停留位置不同

              向上  k
              向下  j
              向左  h
              向右  l    用小鍵盤方向鍵也可
                以上四個(gè)命令可以配合數(shù)字使用,比如 20j 就是向下移動(dòng)20行,5h 就是向左移動(dòng) 5 個(gè)字符;
                在VI中,很多命令都可以配合數(shù)字使用,比如刪除10個(gè)字符10x,在當(dāng)前位置后插入3個(gè)!,3a!,這里的esc是必須的,否則命令不生效;



              0,跳轉(zhuǎn)到行首(跳轉(zhuǎn)到一行開始的第一個(gè)字符,[包括前面的空格]);
              ^,跳轉(zhuǎn)到一行的第1個(gè)字符,[不包括前面的空格];
              $,跳轉(zhuǎn)到行尾
                1$,跳轉(zhuǎn)到當(dāng)前行的行尾
                3$,跳轉(zhuǎn)到下面2行的行尾
       

              屏首       H(首列)            跳轉(zhuǎn)到當(dāng)前可見區(qū)域的頂部第一個(gè)非空字符;
                屏中央     M  (首列)         跳轉(zhuǎn)到當(dāng)前可見區(qū)域的中間第一個(gè)非空字符;
              屏尾       G(首列)/L      跳轉(zhuǎn)到當(dāng)前可見區(qū)域的最后第一個(gè)非空字符;
              
              "H" 表示 "Home" (頭),
              "M" 表示 "Middle" (中) 而 
              "L" 表示 "Last" (尾)。

        滾屏
            ctrl + f    向前看,正向滾動(dòng)1屏(forward)(減去兩行,方便閱讀)
                ctrl + d    向下看,反向滾動(dòng)0.5屏(down)
            ctrl + b    向后看,反向滾動(dòng)1屏(backward)
               ctrl + u    向上看,正向滾動(dòng)0.5屏(up)
            ctrl+e    向上滾動(dòng)1行
            ctrl+y    向下滾動(dòng)1行

            zt  置頂當(dāng)前行,當(dāng)前行顯示在屏幕最上方
            zz  置中當(dāng)前行,當(dāng)前行顯示在屏幕中間
            zb  置底當(dāng)前行,當(dāng)前行顯示在屏幕最下方

            50% 移動(dòng)到文件的中間, 
            90% 移到差不多結(jié)尾的位置。

            set scrolloff=999   上下滾動(dòng)時(shí),光標(biāo)上下兩側(cè)最少保留的屏幕行數(shù),這使你工作時(shí)總有一些可見的上下文。            
            set sidescrolloff=999   上左右滾動(dòng)時(shí),光標(biāo)上下兩側(cè)最少保留的屏幕行數(shù),這使你工作時(shí)總有一些可見的上下文。               
                如果你設(shè)置此選項(xiàng)為很大的值 (比如 999),光標(biāo)所在的行將總定位在窗口的中 間位置 
                (除非你非??拷募_始或者結(jié)束的地方,或者有長行回繞)。

            在含有--More--的頁面中滾動(dòng)方式
                f   向上滾動(dòng)1屏forward
                u   向上滾動(dòng)半屏up
                k   向上滾動(dòng)1行

                b   向下滾動(dòng)1屏back
                d  向下滾動(dòng)半屏down
                j   向下滾動(dòng)1行
                

        定位
            gg  首行(首列,非空字符)   
                5gg 快速跳轉(zhuǎn)到第5行的開頭(首列,非空字符)
            G   尾行  (首列,非空字符) 
                5G  快速跳轉(zhuǎn)到第5行的開頭(首列,非空字符)
                :5  快速跳轉(zhuǎn)到第5行的開頭(首列,非空字符)
            ctr+g  顯示當(dāng)前編輯的文件名+光標(biāo)位置

            :set nu 或者:set number   顯示行號   
            :set nonu 或者:set nonumber 取消顯示行號   
            :set ru 或者:set ruler   顯示光標(biāo)位置,行列   
            :set noru 或者:set noruler 取消光標(biāo)位置,行列   
             
             使用2gg或者2G時(shí),vim會(huì)記住你從什么地方跳過去的。這個(gè)位置成為一 個(gè)標(biāo)記,
                ctrl+o 回到上1個(gè)標(biāo)記處,
                :jumps   輸出一個(gè)你可以跳往的位置的列表。最后一個(gè)你使用的標(biāo)記會(huì)用 ">" 符號標(biāo)記出來。

                有名字的標(biāo)記:
                    m[a-z]  在光標(biāo)處鍵入,給標(biāo)記命名a到z任意字母
                    '[a-z]  ‘單引號這個(gè)鍵+名字                  移到標(biāo)記所在行的行首                      
                    `[a-z]  `反引號這個(gè)鍵(esc下面的鍵)+名字  移到標(biāo)記所在行的行,并同時(shí)移到標(biāo)記所在列上                                    
                    :marks   
                        mamrk標(biāo)記列表中,你會(huì)注意 到有一些特殊的標(biāo)記,包括:
                            ’ 跳轉(zhuǎn)前的光標(biāo)位置
                            " 最后編輯的光標(biāo)位置 
                            [ 最后修改的開始位置 
                            ] 最后修改的結(jié)束位置
                    ’‘或者``都可以回到最新的1個(gè)標(biāo)記處
                    如 在某光標(biāo)處打個(gè)開始標(biāo)記(感覺類似于便簽書簽一樣) ms  在另1外打個(gè)結(jié)束標(biāo)記 me
                    想回到ms或者me處的方法,   
                        `s或者`e
                        ’s或才'e只回到行首
                        ''或者``只會(huì)在上次標(biāo)記和當(dāng)前位置來回切換

              w 移動(dòng)到下1個(gè)單詞的詞頭(光標(biāo)在詞首), 向后移動(dòng)一個(gè)單詞(光標(biāo)停在單詞首部),如果已在行尾,則轉(zhuǎn)至下一行行首;
                W  同w,但會(huì)忽略非單詞部分(可以更快速的移動(dòng))
              b  前1個(gè)單詞,     向前移動(dòng)一個(gè)單詞(光標(biāo)停在單詞首部),
                5b 向前移動(dòng)5個(gè)單詞;
                B  同b,但會(huì)忽略非單詞部分(可以更快速的移動(dòng))

              e 移動(dòng)到下1個(gè)單詞的詞尾(光標(biāo)在詞尾),  只是光標(biāo)停在單詞尾部
                E  同e,但會(huì)忽略非單詞部分(可以更快速的移動(dòng))
              ge 上1個(gè)單詞(光標(biāo)在詞尾),  光標(biāo)停在單詞尾部
                gE  同ge,但會(huì)忽略非單詞部分(可以更快速的移動(dòng))

        head和 tail
            head -n  文件名   前n行
            tail  -n  文件名   后n行

            tail  -f  f5    能夠監(jiān)控日志文件   動(dòng)態(tài)實(shí)時(shí)刷新


          ggVG或者ggvG    全選高亮顯示
          V     進(jìn)入Visual(可視)模式
    縮進(jìn)
        >>,當(dāng)前行增加縮進(jìn)一個(gè)TAB;
            n>>,當(dāng)前行開始的n行增加縮進(jìn)一個(gè)TAB
        <<,當(dāng)前行減少一個(gè)TAB;
            n<<,當(dāng)前行開始的n行減少一個(gè)TAB
          

          
    選中  
        v   可視模式,   光標(biāo)所選中處取被選中內(nèi)容
            This is an examination sample of visual mode
                            velllld
            This is an example of visual mode
        V       可視,列表選擇,按行選擇
                你會(huì)發(fā)現(xiàn)在你作任何移動(dòng) 之前,整行都被高亮顯示了。左右移動(dòng)不會(huì)有任何效果。
                而通過上下移動(dòng),你可以一次選 擇多行。
            Vjj 可以選中三行:
        ctr+v  可視,列表選擇  光標(biāo)所選中處取被選中內(nèi)容
                在處理表格時(shí)非 常有用。
            name            Q1      Q2      Q3
            pierre          123     455     234
            john            0       90      39
            steve           392     63      334
            要?jiǎng)h除中間 "Q2" 這一欄,
                把光標(biāo)移動(dòng)到 "Q2" 的 "Q" 上面。按 CTRL-V 啟動(dòng)列塊可視 模式。
                現(xiàn)在用 "3j" 向下移動(dòng)三行,
                然后用 "w" 移到下一個(gè)單詞。你可以看到最后一欄 的第一個(gè)字符也被包括進(jìn)來了。
                要去掉它,用 "h" 命令即可。
                現(xiàn)在按 "d",中間一欄就 被刪除了。
        o   移動(dòng)到另一端(other end)
            注意:
                "o" 和 "O" 在可視模式下與在普通模式下的作用有很大的不同;
                在普通模式下, 它們的作用是在光標(biāo)后或前加入新的一行。
            普通可視模式下[2個(gè)選擇點(diǎn),在對角]:
                如果你在可視模式下選中了一些文字,然后你又發(fā)現(xiàn)你需要改變被選擇的文字的另一端, 
                o,光標(biāo)會(huì)移動(dòng)到被選中文字的另一端,
                再按 "o" 光標(biāo)還會(huì)回到另一端。
            列塊可視模式下[4個(gè)選擇點(diǎn),在4個(gè)角]::
                當(dāng)使用列塊可視模式的時(shí)候,你會(huì)有四個(gè)角,
                小o,切對角
                大O,切到同行
        選中1個(gè)單詞
            aw  文本對象,1個(gè)單詞(包含單詞+后面的空格)[a word]
        選中1個(gè)句子(在所有可視模式下)
            as 文本對象,1個(gè)句子(包含句子+后面的空格)[a Sentence]
            is 文本對象,內(nèi)含句子(只包含句子)[Inner Sentence]
    拷貝
        y(yanking,抽出),yanking 是 Vim 中拷貝命令的名字
          y     復(fù)制選中內(nèi)容到0號寄存器
          +y    復(fù)制選中內(nèi)容到+寄存器(也就是系統(tǒng)的剪貼板),供其它程序使用
         
          gg-----yG     全部復(fù)制
          gg"+yG    復(fù)制到別的地方
          yw    拷貝詞
            y2w  拷貝兩個(gè)單詞
            注意 :
                yw  包括單詞后面的空白字符。
                ye  不 包括單詞后面的空白字符。

          yy    拷貝一整行 (同Y)   
            5yy    拷貝5行 
          yyp   拷貝光標(biāo)所在行,然后在光標(biāo)所在行的(下一行)粘貼
            注意:
                "yy" 命令拷貝一整行,就像 "dd" 刪除一整行一樣。
                出乎意料地是,"D" 刪除到行尾而 
                "Y" 卻是拷貝一整行。要 注意 這個(gè)區(qū)別!
                "y$" 拷貝到行尾。           
          :1,2co3  拷貝行1,行2到行3之后

          yy,拷貝當(dāng)前行;nyy,拷貝當(dāng)前后開始的n行;等同于Y;
            y^,復(fù)制到行首,不包括當(dāng)前位置;
            y$,復(fù)制到行尾,包括當(dāng)前位置;
            yG,本行復(fù)制到文檔尾;
            ygg,本行復(fù)制到文檔頭;
    剪切
        :4,5m6   移動(dòng)行4,行5到行6之后   剪切
    剪切板
        "*yy   拷貝一行到剪貼板中:
        "*p    粘貼回來
    粘貼
        p(put)              粘貼(在光標(biāo)后粘貼,右側(cè))(p 在 Vim 中表示 put,放置)
            可將已刪除的文本內(nèi)容置于光標(biāo)之后,
            如果最后一次刪除的是1個(gè)整行,那將置于光標(biāo)所在行的下1行
        P(shift+p)     粘貼(在光標(biāo)前,左側(cè)粘貼,或光標(biāo)上一行粘貼)
        xp  交換兩個(gè)字符
            teh 
            光標(biāo)移到e上,執(zhí)行xp命令--》the
                這個(gè)工作過程是: "x" 刪除一個(gè)字 符,保存到寄存器。
                "p" 把這個(gè)被保存的字符插入到光標(biāo)的后面,也就是在 "h" 的后面 了。


        拷貝、剪切、刪除、都會(huì)存放到寄存器中,都可通過p來粘貼
            dd刪除后,可以用p進(jìn)行粘貼;
                ddp即實(shí)現(xiàn)了當(dāng)前行與下一行的交換;
            dl刪除后,也可以用p進(jìn)行粘貼;(dl等同于x)
                dlp即實(shí)現(xiàn)了當(dāng)前字符與其后的一個(gè)字符的交換;
            d相關(guān)的命令刪除后都可以用p進(jìn)行粘貼;
    
    插入
        i,在光標(biāo)之前插入,光標(biāo)左邊插入;
        I,在當(dāng)前行首插入;

        a,在光標(biāo)之后插入,光標(biāo)右邊插入;;
        A,在當(dāng)前行尾插入;
        3a!<Esc>   光標(biāo)右邊插入3個(gè)!,最后一定要按esc才有效

        o,       在當(dāng)前行下方插入一行;
        shift+o   在當(dāng)前行上方插入一行;
            O,    在當(dāng)前行上方插入一行;

        :r  file2   在光標(biāo)所在位置插入另一個(gè)文件 (合并)
    刪除
        x  刪除當(dāng)前字符比較好用
        dd,刪除當(dāng)前行;(會(huì)刪除行首的空字符,當(dāng)前行不保留)
            5dd,刪除當(dāng)前行開始向下的5行;

        J  刪除當(dāng)前行的換行符,將下一行連接到當(dāng)前行行尾,中間用1個(gè)空隔隔開

        dj,刪除當(dāng)前行和下一行;
        dk,刪除當(dāng)前行和上一行;
        d^,刪除至行首(不包括當(dāng)前字符),從當(dāng)前的位置一直刪除到本行行首;等同于d0;
            d0(不包括當(dāng)前字符),也是
            c0,刪除至行首,回到一行的第一個(gè)字符,包括最前面的空白字符;
            c^,刪除至行首,不會(huì)刪除行首的空白字符;
        d$,刪除至行尾(包括當(dāng)前字符),從當(dāng)前的位置一直刪除到本行行尾;等同于D,還有C;
            c$ 刪除至行尾;等同于D,還有C;

        dw,從當(dāng)前光標(biāo)處,直到下1個(gè)單詞起始處,不包括下1個(gè)單詞的第1個(gè)字符
            d2w  刪除從光標(biāo)處,刪除到后面第2個(gè)單詞詞頭前
        文本對象
            aw是 文本對象,1個(gè)單詞
            as是 文本對象,1個(gè)句子(包含句子+后面的空格)
            is是 文本對象,內(nèi)含句子(只包含句子)

            daw  "daw" 就是 "Delete A Word" (刪除一個(gè)單詞),[aw是 文本對象]
                    如果你在一個(gè)單詞的中間而又想刪掉這個(gè)單詞,可用daw快速刪除,該單詞后的 空格字符也被刪除掉了。
            cis  (change Inner Sentence 修改內(nèi)含句子)
            das (delete a Sentence 修改內(nèi)含句子)


        de  從當(dāng)前光標(biāo)處,直到下1個(gè)單詞末尾處,包括下1個(gè)單詞的最后第1個(gè)字符
            d2e  刪除從光標(biāo)處,刪除到后面第2個(gè)單詞詞尾處

        df<字符>  從光標(biāo)處開始刪除到<字符處>
            .    重復(fù)任何除 "u" (撤銷),CTRL-R (重做) 和冒號命令外的修改。
                    這里會(huì)重復(fù)執(zhí)行上1次的 df<字符> 命令

        3dw   刪除 3 個(gè)單詞
                刪 除1個(gè)單詞 3 次
        d3w   刪除 3 個(gè)單詞
                刪除3個(gè)單詞1次
        3d2w  刪除 6 個(gè)單詞
                刪除2個(gè)單詞3次

        db,刪除光標(biāo)所在處一個(gè)單詞的前部分/上1個(gè)單詞;
        dG,刪除光標(biāo)所在行 至文檔結(jié)束;
            gg然后dG,  刪除全部
        dgg,刪除光標(biāo)所在行 至文檔開頭;

        :n1,n2d,刪除n1 至 n2行;
        :n1,$d,刪除n1 至文檔結(jié)束;
        :1,$d,刪除所有行;

        shift + j,合并當(dāng)前行與下一行;等同于J;
        dl,向后刪除光標(biāo)所在的一個(gè)字符;等同于x;
            5dl,刪除當(dāng)前向后的5個(gè)字符;
            5x,刪除當(dāng)前向后的5個(gè)字符;
        dh,向前刪除光標(biāo)所在的一個(gè)字符;等同于X;

        常用到的刪除文本命令
            x 刪除光標(biāo)下的字符 ("dl" 的縮寫)
            X 刪除光標(biāo)前的字符 ("dh" 的縮寫)
            D 從當(dāng)前位置刪除到行尾 ("d$" 的縮寫) 
            dw 從當(dāng)前位置刪除到下一個(gè)單詞開頭(=daw會(huì)刪除空白字符)
            db 從當(dāng)前位置刪除到前一個(gè)單詞的開頭
            diw 刪除光標(biāo)上的單詞 (不包括空白字符,iw=inner word) 
            daw 刪除光標(biāo)上的單詞 (包括空白字符,aw=a word)
            dG 刪除到文件末
            dgg 刪除到文件首
            以上用 "c" 代替 "d",這會(huì)變成修改命令;
                而改用 "y",則變成拷貝命令,等等等 等。

    替換、修改
        c(change)
             cw   從光標(biāo)處開始,替換一個(gè)單詞,
                ce   同cw
             c^   從光標(biāo)處開始,替換直行首
                c0 
             c$   從光標(biāo)處開始,替換直行尾
                C     替換從光標(biāo)到行尾
             c  修改,change。它的作用方式與 "d" 操作符相似,只是 完成后會(huì)切換到插入模式。
                ce 刪除,修改一個(gè)詞,更精確的說,它刪除一個(gè)詞,并切換到插入模式。
                cw 同ce
                    c2wbe<Esc>
                        c 修改操作符
                        2w 移動(dòng)兩個(gè)單詞的距離 (與操作符合起來,它刪除兩個(gè)單詞并進(jìn)入插入模式)
                        be 插入 be 這個(gè)單詞
                        <Esc> 切換回普通模式
                c$  修改至行尾,
                    這相當(dāng)于先用 "d$" 刪除一行再用 "a" 啟動(dòng)插 入模式,以便加入新的文字。
                cl  修改光標(biāo)處1個(gè)字符
            cc,修改當(dāng)前一整行,并進(jìn)入編輯模式;等價(jià)于S(大寫);
                但它會(huì)保留這一行的縮進(jìn) (前導(dǎo)空格)。
                5cc,刪除,修改當(dāng)前行開始向下的5行;
        r(replace)
            r,替換單個(gè)字符,  用新輸入的一個(gè)字符替換當(dāng)前一個(gè)字符;[一直在命令模式下]
                cl
                s

                5rx         將光標(biāo)處[含光標(biāo)處]向右總共5個(gè)字符,替換成x
                5r<Enter>    將光標(biāo)處[含光標(biāo)處]向右總共5個(gè)字符,替換成1個(gè)回車換行符

            R,連續(xù)替換多個(gè)字符,在當(dāng)前光標(biāo)處連續(xù)替換,[一直在替換的編輯模式下]
                This is text.
                        Rinteresting.<Esc> 
                This is interesting.
                你可能會(huì) 注意 到,這是用十二個(gè)字符替換一行中的五個(gè)字符。
                如果超出行的范圍,"R" 命 令自動(dòng)進(jìn)行行擴(kuò)展,而不是替換到下一行。

                在替換過程中,當(dāng)你使用 <BS> (退格鍵) 進(jìn)行修正時(shí),你會(huì)發(fā)現(xiàn)原來被替換的字符又回來了。這就好像一個(gè) "撤消" 命令一樣。
        s()
            s    修改光標(biāo)處1個(gè)字符
             :10,20 s/^/——/g,從第10行至第20行每行行首插入四個(gè)中橫杠( - );
                :10,20 s/$/——/g,從第10行至第20行每行行尾插入四個(gè)中橫杠( - );
                :s/old/new/,在當(dāng)前行中用 old 替換 new,替換第一個(gè)匹配到的;沒提示
                :s/old/new/c,在當(dāng)前行中用 old 替換 new,替換第一個(gè)匹配到的;有提示
                :s/old/new/g,在當(dāng)前行中用 old 替換 new,替換當(dāng)前行的所有匹配;沒提示
                :s/old/new/gc,在當(dāng)前行中用 old 替換 new,替換當(dāng)前行的所有匹配;有提示
                :%s/old/new/g,全文將 old 替換為 new,不提示;
                :%s/old/new/c,全文將 old 替換為 new,提示是否替換;
            
            :s/old/new          只改變光標(biāo)所在行的  第1個(gè)匹配串
            :s/old/new/g        匹配光標(biāo)所在行    所有的匹配串
            
            :n1,n2s/old/new/g    匹配從n1行到n2行中[包括n1和n2行本身]    所有的匹配串 

            :%s/old/new/g        匹配全文中    所有的匹配串 
            :%s/old/new/gc        匹配全文中    所有的匹配串 ,并逐一詢問是否替換

        ~    大小寫切換(命令模式下,光標(biāo)所在處的字母自動(dòng)切換大小寫) 
              按住shift   大寫字母,
              松開shift   小寫字母
              修改光標(biāo)下字符的大小寫,并移動(dòng)到下一個(gè)字符。這不是一個(gè)操作符 (除非設(shè)置了 ’tildeop’),所以你不能連接一個(gè)動(dòng)作命令。
                這個(gè)命令在 可視模式下也有效,它會(huì)改變被選中的所有文本的大小寫。
        I  移到當(dāng)前行的第一個(gè)非空字符并啟動(dòng)插入模式。[i/I在光標(biāo)左側(cè)插入]
        A  移動(dòng)到行尾并啟動(dòng)插入模式?!      a/A在光標(biāo)右側(cè)插入]

        x 表示 dl (刪除當(dāng)前光標(biāo)下的字符) 
        X 表示 dh (刪除光標(biāo)左邊的字符)
        D 從當(dāng)前位置刪除到行尾 ("d$" 的縮寫)

        C 表示 c$ (修改到行尾)
        s 表示 cl (修改一個(gè)字符),修改當(dāng)前字符,光標(biāo)定位當(dāng)前位置 
        S 表示 cc (修改一整行)  修改當(dāng)前行,光標(biāo)定位當(dāng)前行首


    查找
        /text    查找text,從當(dāng)前行往下查找(/從光標(biāo)處,往下找)
        ?text    查找text,從當(dāng)前行往上查找(/從光標(biāo)處,往上找)
          n          繼續(xù)向正(如果前面是/,正向就是,向下)查找下一個(gè)
          N         反方向(如果前面是/,反向就是,向上)繼續(xù)查找下一個(gè)
            3n  移動(dòng)到第三個(gè)匹配點(diǎn)
            注意 , "/" 不支持計(jì)數(shù)前綴。
         注意:如果查找已經(jīng)到達(dá)文件末尾,查找會(huì)自動(dòng)從文件頭部繼續(xù)查找,除非‘wrapscan’被復(fù)位
                字符 .*[]^%/\?~$ 有特殊含義。如果你要查找它們,需要在前面加上一個(gè) "\"。
         查找很長的詞,鍵入太麻煩,這時(shí)候可以將光標(biāo)移動(dòng)到該詞上,(其它也可以包括中文符號等)
            * 相當(dāng)于 / 搜索;向下查找[正向查找,匹配整個(gè)單詞]
                3*   查找光標(biāo)下單詞第三次出現(xiàn)的地方。
                g*  [正向查找,部分匹配]
            # 鍵即可以該單詞進(jìn)行搜索, 相當(dāng)于 ? 搜索,向上查找[反向查找,匹配整個(gè)單詞]
                #*  [反向查找,部分匹配]

         

         /the$     在行尾匹配[完整單詞]the, 查找以 "The" 結(jié)尾的一行
         /^the     在行首匹配[完整單詞]the, 查找以 "The" 開頭的一行
         /^the$    匹配僅包含 [完整單詞]the的行

         /ter.   匹配ter+任意字符
         /ter\.  匹配ter+.


         /the\>     匹配以the結(jié)尾的單詞
         /\<the     匹配以the開頭的單詞
         /\<the\>   匹配以完整的單詞the



        :set xxx  可以設(shè)置xxx選項(xiàng),常用的選項(xiàng)如下
            'ic' 'ignorecase'       查找時(shí)忽略字母大小寫
                'noic' 'noignorecase'       查找時(shí) 不忽略字母大小寫
                如果想要僅在一次查找時(shí)忽略字母大小寫,可以使用 \c:/ignore\c <回國>   沒弄明白怎么實(shí)現(xiàn)?

            'is' 'incsearch'        輸入搜索命令時(shí),顯示目前輸入的模式的匹配位置。匹配的字符串被高亮。
                                    如果 該模式不合法或者沒有匹配,不顯示任何東西。屏幕會(huì)經(jīng)常刷新,
                                    所以只有 對快速終端,這才有意義。
                'nois' 'noincsearch'        查找短語時(shí) 不顯示部分匹配
            'hls' 'hlsearch'        高亮顯示所有的匹配短語
                'nohls' 'nohlsearch'        高亮   不顯示所有的匹配短語

        :nohls                      關(guān)閉當(dāng)前的高亮顯示,如果再次搜索或按下 n 或 N 鍵,則會(huì)再次高亮;[臨時(shí)關(guān)掉高亮顯示]
            比較常用,vim會(huì)記錄上一次查找,在當(dāng)前vim中在次打開其它文件,還沒查找就高亮顯示上一次的記錄,用這命令可以很方便
                :nohlsearch         關(guān)閉當(dāng)前的高亮顯示,如果再次搜索或按下 n 或 N 鍵,則會(huì)再次高亮;

        :set wrap        長行自動(dòng)回繞,Vim 通常會(huì)對長行自動(dòng)回繞,以便你可以看見所有的文字。但有時(shí)最好還是能讓文字在一行中顯示完。
                            這樣,你需要左右移動(dòng)才能看到一整行。
            :set nowrap   關(guān)閉長行自動(dòng)回繞

        :set wrapscan       重新搜索,在搜索到文件頭或尾時(shí),返回繼續(xù)搜索,默認(rèn)開啟;

        配對括號的查找
            %   可以查找配對的 )、]、}
                將光標(biāo)放在任何1個(gè)以上括號上,在按下%,就會(huì)自動(dòng)配對到對應(yīng)的另1半配對的括號上
                不將光標(biāo)放到括號上,也能自動(dòng)正向(向右)匹配到第1個(gè)括號,

        行內(nèi)查找字符(在當(dāng)前行移動(dòng))
                  fx   光標(biāo)右側(cè)查找x字符(光標(biāo)定位到x上)
                    Fx     光標(biāo)左側(cè)查找x字符(光標(biāo)定位到x上)

                 tx   光標(biāo)右側(cè)查找x字符(光標(biāo)定位到x左側(cè))
                    Tx     光標(biāo)左側(cè)查找x字符(光標(biāo)定位到x左側(cè))
                  ;   正向重復(fù) 
                  ,   反向重復(fù)

                  個(gè)人常用f<字符> ;/,來提高本行中定位單個(gè)字符速度,不喜歡用大寫,都要切換大小寫

    重做
          u 撤銷 undo
          U 行撤消,行撤銷命令撤銷所有在最近編輯的行上的操作。 輸入該命令兩次取消前一個(gè) "U":
          ctr+R  重做,
                如果你撤銷得太多,你可以輸入 CTRL-R (redo) 回退前一個(gè)命令。換句話說,它撤銷一個(gè)撤銷。
    重復(fù)修改
        .    重復(fù)任何除 "u" (撤銷),CTRL-R (重做) 和冒號命令外的修改。
            行內(nèi)重復(fù)修改
                To <B>generate</B> a table of <B>contents
                    f<      找第一個(gè) < 
                    df>     刪除到 >
                    f<      找下一個(gè) < 
                    .       重復(fù)df>
                    f<      找下一個(gè) < 
                    .       重復(fù)df>
                            如此類推
            全文重復(fù)修改
                你想把 "four" 修改成 "five"。有好幾個(gè)地方都要作這種修改
                    /four<Enter>    找到第一個(gè) "four"
                    cwfive<Esc>     修改成 "five"
                    n               找下一個(gè) "four"
                    .               重復(fù) cwfive<Esc>
                    n               找下一個(gè) "four"
                    .               重復(fù) cwfive<Esc>
                                    如此類推.....   
    注釋:
        vim編輯器---批量注釋與反注釋

            方法一 塊選擇模式
                插入注釋:
                    用v進(jìn)入virtual模式
                    用上下鍵選中需要注釋的行數(shù)
                    按Control+v(win下面ctrl+q)進(jìn)入列模式
                    按大些“I”進(jìn)入插入模式,輸入注釋符“#”或者是"http://",然后立刻按下ESC(兩下)

                取消注釋:
                    Ctrl + v 進(jìn)入塊選擇模式,選中你要?jiǎng)h除的行首的注釋符號,注意// 要選中兩個(gè),選好之后按d即可刪除注釋


            方法二 替換命令
                批量注釋:
                使用下面命令在指定的行首添加注釋:
                    :起始行號,結(jié)束行號s/^/注釋符/g
                取消注釋:
                    :起始行號,結(jié)束行號s/^注釋符//g

                實(shí)例演示:
                    在27 - 30行添加 // 注釋
                    :27,30s#^#//#g

                    在27 - 30行刪除 // 注釋
                    :27,30s#^//##g

                    在10 - 20行添加 # 注釋
                    :10,20s/^/#/g

                    在10 - 20行刪除 # 注釋
                    :10,20s/^/#/g

            注意例子中正則的分割符使用的是相反的符號,如果匹配// 那么使用 #作分隔符這樣不需要對/作轉(zhuǎn)義處理,節(jié)省輸入次數(shù)。


    保存
        從正在編輯的vim中,將文本內(nèi)容定入到文件,文件一定不能存在(否則寫入不了)
        保存文件的更多信息
            在打開的vim文件中執(zhí)行以下:
                :!ls 
                使用1個(gè)當(dāng)前目前不存在的文件名,如test(test在此之前不存在)
                :w test      將當(dāng)前正在編輯的文件保存到test文件中
                :!ls        發(fā)現(xiàn)當(dāng)前目錄多了個(gè)tset文件,就是保存的文件
        選擇性保存
            :n1,n2 w test10   從n1行到n2行中內(nèi)容 定稿到test10文件中(test10在此之前不存在)
            或者
                移動(dòng)光標(biāo)到所在行
                v或者ctr+v-->進(jìn)入可視模式
                移動(dòng)光標(biāo)到指定行,
                按下:字符,確認(rèn)看到屏幕底部看到 :'<,'>
                在接著輸入w test10  <回車>

      :w               存盤 write  (類似Windows中 ctrl + s)
      :w  新文件名    另存為新文件(新文件名,之前不能存在)
      :wq              退出保存 或:x
      :q!              退出不保存,放棄修改
        :e!                 重新裝載原來放棄修改的文件,
                            放棄修改后,還想重新編輯(在未保存前操作,不常用)

      ZZ        退出保存,不會(huì)自動(dòng)建立1個(gè)備份文件,修改立即生效,并且不能恢復(fù),可以配置vim讓它產(chǎn)生1個(gè)備份文件
                用shift+z+z方便

     提取和合并文件
        :r newfilename   將在光標(biāo)處,插入,
                        通過:n1,n2 w newfilename
                        或者:'<,'> w newfilename創(chuàng)建的newfilename
            如 :r test10
        :r !ls        也可提取外部命令的輸出


    vim內(nèi)執(zhí)行外部命令
        :!+外部命令+回車
            :!ls 回車       在vim中執(zhí)行外部的shell命令,列出當(dāng)前目錄的內(nèi)容
        
    獲取幫助信息
        :help <回車>
            :help w     查詢和w相關(guān)的幫助
            :help c_CTRL-D
            :help insert-index
            :help user-manual

            當(dāng)你閱讀幫助的時(shí)候,你會(huì)發(fā)現(xiàn)有一些文字被一對豎線括起來了 (例如 |help|或者[xxx])。這表示 一個(gè)超級鏈接。
                CTRL-]   如果你把光標(biāo)移到這兩個(gè)豎線之間并按 CTRL-] (標(biāo)簽跳轉(zhuǎn)命令),幫助系 統(tǒng)會(huì)把你引向這個(gè)超級鏈接指向的主題。
                CTRL-T   (標(biāo)簽退棧) 把你送回前一個(gè)跳轉(zhuǎn)點(diǎn)
                CTRL-O    (跳轉(zhuǎn)到前一個(gè)位置) 也能完成相同的功能。
            退出幫助窗口(光標(biāo)要在幫助窗口,否則退出的不是幫助窗口):
                :q <回車>
                    或ZZ退出
            幫助窗口與當(dāng)前vim編輯窗口間的切換
                ctr+w

        按下<HELP>鍵(如果鍵盤上有的話)
        按下<F1>鍵(如果鍵盤上有的話)
        
    配置vim,創(chuàng)建啟動(dòng)腳本
        1、開始編輯 vimrc文件
            :edit ~/.vimrc      unix中
            :edit $VIM/_vimrc      ms-win中
        2、接著讀取vimrc示例文件的內(nèi)容
            :r $VIMRUNTIME/vimrc_example.vim
        3、保存文件,命令為
            :write
        下次啟動(dòng)vim時(shí),編輯器應(yīng)有了語法高亮的功能
        可以將喜歡的設(shè)置添加到這個(gè)vimrc文件中
    補(bǔ)全功能
        ctr+d 和tab

        確保vim不在兼容模式下,set nocp
            查看vim是否在兼容模式,
                set compatible?
                    顯示nocompatible   非兼容模式
                    顯示nocompatible  兼容模式

        :!ls    可以查看當(dāng)前目錄下,所有目錄和文件
        :e
        ctr+d  會(huì)列出當(dāng)前目錄中所有以e開頭的目錄
        tab自動(dòng)補(bǔ)全

    ctrl-c 發(fā)送 SIGINT 信號給前臺(tái)進(jìn)程組中的所有進(jìn)程。常用于終止正在運(yùn)行的程序。 
    ctrl-z 發(fā)送 SIGTSTP 信號給前臺(tái)進(jìn)程組中的所有進(jìn)程,常用于掛起一個(gè)進(jìn)程。 
        fg命令重新啟動(dòng)前臺(tái)被中斷的任務(wù),
        bg命令把被中斷的任務(wù)放在后臺(tái)執(zhí)行.
    ctrl-d 不是發(fā)送信號,而是表示一個(gè)特殊的二進(jìn)制值,表示 EOF。 
    ctrl-/ 發(fā)送 SIGQUIT 信號給前臺(tái)進(jìn)程組中的所有進(jìn)程,終止前臺(tái)進(jìn)程并生成 core 文件。

二、配置.vimrc文件

1、vimrc 文件
    保存你個(gè)人初始化的地方是:
        Unix            $HOME/.vimrc 或 $HOME/.vim/vimrc
        OS/2            $HOME/.vimrc、$HOME/vimfiles/vimrc 或$VIM/.vimrc (或 _vimrc)
        MS-Windows      $HOME/_vimrc、$HOME/vimfiles/vimrc 或$VIM/_vimrc
        Amiga           s:.vimrc、home:.vimrc、home:vimfiles:vimrc或 $VIM/.vimrc
    vim自帶vimrc模版文體
        $VIMRUNTIME/vimrc_example.vim
        在vim中查看$VIMRUNTIME變量的值
            :echo $VIMRUNTIME
            /usr/share/vim/vim74
                注意:如果想查看外部變量,非vim內(nèi)部變量,要在命令前加!,會(huì)切換出vim中顯示,按回車,可繼續(xù)回到vim中操作
                    如:  :!ls -l

    在vim中編輯
        :edit $MYVIMRC
    在shell中編輯
        vim ~/.vimrc

2、vimrc 示例解釋
3、簡單鍵盤映射
    假設(shè)你要用一個(gè)大括號將一個(gè)特 定的單詞括起來
        例如,把 "amount" 變成 "{amount}"。用 ":map" 命令,就可以讓 F5 來完成這個(gè)工作。命令如下:
        :map <F5> i{<Esc>ea}<Esc>
            備注 :
                在輸入這個(gè)命令時(shí),<F5> 要用四個(gè)字符表示。相似地,輸入 <Esc> 不是直接按 <Esc> 鍵,而是輸入五個(gè)字符。
            <F5>        F5 功能鍵。這是命令的觸發(fā)器。當(dāng)這個(gè)鍵被按下時(shí),相應(yīng)的命令即被 執(zhí)行。
            i{<Esc>     插入 { 字符。<Esc> 鍵用于退出插入模式。
            e           移動(dòng)到詞尾。
            a}<Esc>   在光標(biāo)右側(cè)插入 } 到單詞尾。
        注意:執(zhí)行 ":map" 命令后,要在單詞兩端加上 {},
            只需要移到單詞的第一個(gè)字符上并按 F5。
    鍵盤映射 (Map)
        map <F5> <Esc>bi{<Esc>ea}<Esc>  ?。墼?vimrc中最后一行添加]
            <Esc> 切換命令行狀態(tài)
            i{將插入字符{,
            <Esc> 切換命令行狀態(tài)
            接著用e移到單詞結(jié)尾,
            a}在詞尾右邊增加字符},
            <Esc> 切換命令行狀態(tài)

            光標(biāo)定位在一個(gè)單詞上(例如amount)[注意:如果光標(biāo)在a上,會(huì)定位到上1個(gè)單詞處,此處要做判斷,待后續(xù)深入學(xué)習(xí)]
            ,按下F5鍵,這時(shí)字符就會(huì)變成{amount}的形式。 
        不同模式下的鍵盤映射
            Command  Normal  Visual  Operator Pending  Insert Only  Command Line
            vim中命令 常規(guī)模式 可視化模式  運(yùn)算符模式         插入模式    命令行模式
                     命令模式  選擇模式
            :map        y       y           y       
            :nmap       y               
            :vmap               y           
            :omap                           y       
            :map!                                               y           y
            :imap                                               y   
            :cmap                                                           y

            標(biāo)記                      模式
            <space>     常規(guī)模式,可視化模式,運(yùn)算符模式
            n                       常規(guī)模式
            v                       可視化模式
            o                       運(yùn)算符模式
            !                       插入模式,命令行模式
            i                       插入模式
            c                       命令模式
            查看鍵盤映射
                :map命令,可以列出(nvo模式下的)所有鍵盤映射。其中第一列標(biāo)明了映射在哪種模式下工作:
                :map!命令,則只列出(ic模式下的)插入和命令行模式的映射
                :imap,:vmap,:omap,:nmap命令則只是列出相應(yīng)模式下的映射。
            取消鍵盤映射
                :unmap <F10>

                :iunmap    取消插入模式下的鍵盤映射
                :nunmap    取消常規(guī)模式下的鍵盤映射
                :mapclear   取消所有映射,會(huì)移除所有用戶定義和系統(tǒng)默認(rèn)的鍵盤映射。
        key-notation  按鍵符號
            下面這些按鍵的名稱文檔里會(huì)用到。它們也可以用在 ":map" 命令里 (按下 CTRL-K 再按 下你想輸入的鍵就可以輸入該鍵的鍵名)。
            notation        meaning             equivalent      decimal  value(s)
            標(biāo)識(shí)符         含義                  等價(jià)于         十進(jìn)制   值
            -----------------------------------------------------------------------
            <Nul>           零                  CTRL-@           0           (stored as 10) <Nul>
            <BS>            退格鍵               CTRL-H            8           backspace
            <Tab>           制表符               CTRL-I            9           tab Tab
                                                                            linefeed
            <NL>            換行符                CTRL-J           10          (used for <Nul>)
            <FF>            換頁符                CTRL-L           12          formfeed
            <CR>            回車符                  CTRL-M         13          carriage-return
            <Return>        同<CR>                                           <Return>
            <Enter>         同<CR>                                           <Enter>
            <Esc>           轉(zhuǎn)義                  CTRL-[          27          escape <Esc>
            <Space>         空格                                  32          space
            <lt>            小于號                <                60          <lt>
            <Bslash>        反斜杠                \                92          backslash <Bslash>
            <Bar>           堅(jiān)杠                   |              124         <Bar>
            <Del>           刪除                                  127
            <CSI>           命令序列引入          ALT-Esc         155         <CSI>
            <xCSI>          圖形界面的 CSI                                       <xCSI>

            <EOL>           行尾 (可以是 <CR>、<LF> 或 <CR><LF>, 
                            根據(jù)不同的系統(tǒng)和 ’fileformat’ 而定)               <EOL>

            <Up>            cursor-up                                       cursor-up cursor_up
            <Down>          cursor-down                                     cursor-down cursor_down         
            <Left>          cursor-left                                     cursor-left cursor_left
            <Right>         cursor-right                                    cursor-right cursor_right
            <S-Up>          shift-cursor-up
            <S-Down>        shift-cursor-down
            <S-Left>        shift-cursor-left
            <S-Right>       shift-cursor-right

       <C-Left>     Control+光標(biāo)左移鍵 
            <C-Right>       
            <F1> - <F12>
            <S-F1> - <S-F12> Shift+功能鍵 1 到 12
            <Help>              幫助鍵
            <Undo>              撤銷鍵
            <Insert>            Insert 鍵
            <Home>              
            <End> 
            <PageUp>            Page-up
            <PageDown>          Page-down
            <kHome>             小鍵盤 Home (左上)
            <kEnd>              小鍵盤 End (左下)
            <kPageUp>           小鍵盤 Page-up (右上)
            <kPageDown>         小鍵盤 Page-down (右下)
            <kPlus>             小鍵盤 +
            <kMinus>            小鍵盤 -
            <kMultiply>         小鍵盤 *
            <kDivide>           小鍵盤 /
            <kEnter>            小鍵盤 enter
            <kPoint>            小鍵盤 小數(shù)點(diǎn)
            <k0> - <k9>         小鍵盤 0 到 9
            <S-...>             Shift+鍵
            <C-...>             Control+鍵
            <M-...>             Alt+鍵 或 meta+鍵
            <A-...>             同 <m-...>
            <D-...>             Command+鍵 (只用于蘋果機(jī))
            <t_xx>              termcap 里的 "xx" 入口鍵
4、添加插件
    插件其實(shí)是一個(gè)當(dāng) Vim 啟動(dòng)的時(shí)候能被自動(dòng)執(zhí)行的腳本。
         簡單地把插件放到你 Vim 的 plugin 目錄中就可以使它生效。
        {僅當(dāng) Vim 編譯時(shí)加入 |+eval| 特性時(shí)才有效}

    Vim 中有兩種插件:
        全局插件: 用于所有類型的文件
            添加一個(gè)全局插 件只要兩步:
                1. 獲得一個(gè)插件的拷貝
                    在什么地方可以找到插件?
                        - 有一些與 Vim 一起發(fā)布,你可以在 $VIMRUNTIME/macros 目錄或其子目錄中找到。 
                        - 從網(wǎng)上下載,http://www.vim.org 收集了很多。
                        - 在 Vim 的郵件列表中找: |maillist|。
                        - 自己寫一個(gè),參見 |write-plugin|。
                2. 把它塞進(jìn)合適的目錄
            使用一個(gè)全局插件
                系統(tǒng)                  插件目錄
                Unix                    ~/.vim/plugin/
                PC 和 OS/2               $HOME/vimfiles/plugin 或 $VIM/vimfiles/plugin
                Amiga                   s:vimfiles/plugin
                Macintosh               $VIM:vimfiles:plugin
                RISC-OS                 Choices:vimfiles.plugin

                以 Unix 系統(tǒng)為例 (假設(shè)你還沒有 plugin 目錄):
                    mkdir ~/.vim
                    mkdir ~/.vim/plugin
                    cp /usr/local/share/vim/vim60/macros/justify.vim  ~/.vim/plugin   
                            注意:/usr/local/share/vim/vim60為$VIMRUNTIME,
                                具體路徑要進(jìn)入vim中,用:echo $VIMRUNTIME查看,
                                    目前在下用的centos7對應(yīng)$VIMRUNTIME=/usr/shar/vim/vim74

                    建議:除了把這些插件直接放進(jìn) plugin/ 目錄以外,還可以更好地組織一下,把它們放進(jìn) plugin 的單獨(dú)的子目錄中。
                            例如,可以考慮把所有 Perl 插件放置在 "~/.vim/plugin/perl/*.vim"
        文件類型插件: 僅用于特定類型的文件
            Vim 的發(fā)布中包括一套針對不同文件類型的插件。你可以用如下命令啟用它們:
                :filetype plugin on
            如果你缺少某種文件類型的插件,或者你找到一個(gè)更好的,你可以自行添加一個(gè)。這也只 需兩步:
                1. 獲取一個(gè)插件的拷貝
                2. 塞到合適的目錄。
            取得文件類型插件
                你可以在找全局插件的相同地方找到文件類型插件
                 注意 
                    插件有沒有注明文件類型, 據(jù)此你可以知道這個(gè)插件是全局的還是文件類型相關(guān)的。
                    在 $VIMRUNTIME/macros 中的是 全局插件;
                    在 $VIMRUNTIME/ftplugin 中的是 文件類型插件。
            使用文件類型插件
                你可以通過把插件文件放到合適的目錄中來增加一個(gè)插件。目錄的名字與前面提過的全局 插件的位置一樣,
                但最后一級目錄是 "ftplugin"。
                    假設(shè)你找到一個(gè)用于 "stuff" 文件類 型的插件,而且你的系統(tǒng)是 Unix。那么,你可以把這個(gè)文件用如下命令移入 ftplugin 目錄:
                        mv thefile ~/.vim/ftplugin/stuff.vim   [thefile具體文件類型插件的路徑]
                    如果這個(gè)文件已經(jīng)存在,你可以檢查一下兩個(gè)插件有沒有沖突。如果沒有,你可以用另一 個(gè)名字:
                            mv thefile ~/.vim/ftplugin/stuff_too.vim
                    注意:
                        這里,下劃線用來分開文件類型和其它部分 (這些部分可以由任意字符組成)。
                        但如果你 用 "otherstuff.vim" 就不行了。那是用于 "otherstuff" 類型的文件的。
            文件類型插件名稱格式
                一個(gè)文件類型相關(guān)的插件的名稱是:
                    ftplugin/<filetype>.vim 
                    ftplugin/<filetype>_<name>.vim 
                    ftplugin/<filetype>/<name>.vim

                        <name> 可以是任何你喜歡的名字。例如,在 Unix 上,"stuff" 文件類型的插件 可以是:
                            ~/.vim/ftplugin/stuff.vim
                            ~/.vim/ftplugin/stuff_def.vim
                            ~/.vim/ftplugin/stuff/header.vim
                        <filetype> 部分是相應(yīng)文件類型的名稱。只有對應(yīng)文件類型的文件才會(huì)用這個(gè)插 件內(nèi)的設(shè)置。
                            插件的 <name> 部分則不重要,你可以對同一個(gè)文件類型使用多個(gè)插件。
                        注意 插件必須以 ".vim" 結(jié)尾。
5、添加幫助
    以 "matchit.vim" 插件為例 (包括在 Vim 中)。
        這個(gè)插件使 "%" 命令可以在兩個(gè)對 應(yīng)的 HTML 標(biāo)記間,Vim 腳本的 if/else/endif 間等匹配點(diǎn)間跳轉(zhuǎn)。這非常有用,但它 不向后兼容 (這也是為什么默認(rèn)的情況下它不會(huì)被激活)。
        這個(gè)插件有一個(gè)文檔: "matchit.txt"。

        1、我們先來把該插件拷貝到合適的位置。這 次,我們在 Vim 內(nèi)完成這個(gè)工作,以便利用 $VIMRUNTIME。(如果某些目錄已經(jīng)存在你可 以省略一些 "mkdir" 命令)
            :!mkdir ~/.vim
            :!mkdir ~/.vim/plugin
            :!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin
                "cp" 命令是基于 Unix 的,MS-DOS 上你可以用 "copy"。 
        2、現(xiàn)在在某個(gè) ’runtimepath’ 目錄中建立一個(gè) doc 目錄。
            :!mkdir ~/.vim/doc
        3、再把幫助文件拷貝進(jìn)去:
            :!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc
        4、現(xiàn)在開始玩技巧了,怎樣使 Vim 允許你跳轉(zhuǎn)到新的主題上?用 |:helptags| 命令產(chǎn)生一 個(gè)本地的 tags 文件即可:
            :helptags ~/.vim/doc
        5、現(xiàn)在,你可以用這個(gè)命令 
            :help g%        來獲得 "g%" 的幫助了。在使用如下命令的時(shí)候,可以看見一個(gè)新的條目: 
            :help local-additions
                        本地幫助的標(biāo)題行被自動(dòng)的加入到該節(jié)了。在那里你可以看到 Vim 添加了那些本地的幫 助文件。你還可以從這里跳轉(zhuǎn)到新的幫助中。
        6、要寫一個(gè)本地幫助文件,請參考 |write-local-help|。
6、選項(xiàng)窗口
    如果要找一個(gè)選項(xiàng),你可以在這里尋找?guī)椭? |options|。
    另一個(gè)方法是用如下命令:[只是臨時(shí)有效,重新打開文件,失效,在.vimrc中設(shè)置,長期有效]
        :options
            這會(huì)打開一個(gè)新窗口,其中給出一個(gè)選項(xiàng)的列表,并對每個(gè)選項(xiàng)提供一行解釋。這些選項(xiàng) 根據(jù)種類分組。
            將光標(biāo)移到一個(gè)主題上然后按 <Enter> 就可以跳轉(zhuǎn)到那里。再按一下 <Enter> 或者 CTRL-O 就可以跳回來。

            你可以通過這個(gè)窗口改變一個(gè)選項(xiàng)的值。
                例如,移到 "displaying text" 主題。
                然后把 光標(biāo)下移到這一行:
                set wrap        nowrap
                當(dāng)你在上面鍵入回車,這行會(huì)改變?yōu)? set nowrap wrap
                    現(xiàn)在,這個(gè)選項(xiàng)被關(guān)閉了。 這行的上方是對這個(gè)選項(xiàng)的簡要描述。
                將光標(biāo)向上移動(dòng)一行,然后按 <Enter>,你可以跳轉(zhuǎn)到 ’wrap’ 的完整幫助,再用 CTRL-O 可以跳回來。 
                對于那些值為數(shù)值或者字符串的選項(xiàng),你可以編輯它的值,然后按 <Enter> 來啟用該值。
                    例如,把光標(biāo)移動(dòng)到下面這行: set so=0
                    用 $ 移到行尾,
                    再用 "r5" 命令修改為五,然后按 <Enter> 使修改生效。

                    現(xiàn)在如果你移 動(dòng)一下光標(biāo),你會(huì)發(fā)現(xiàn)在你的光標(biāo)移到窗口邊界前,你的文字就開始滾動(dòng)了。這就是選項(xiàng) ’scrolloff’ 完成的功能: 它指定在距離邊界多遠(yuǎn)的地方開始滾動(dòng)文字。
7、常用選項(xiàng)
    Vim 中有很多選項(xiàng)。大部分你很少用得上。我們在這個(gè)介紹一些常用的。別忘了你可以通過 ":help" 命令獲得更多的幫助。方法是在選項(xiàng)命令前后加上單引號,例如:        :help ’wrap’
        查看當(dāng)前選項(xiàng)的值的方法
            :set 選項(xiàng)?
            如:set wrap?   
                顯示wrap表示打開了長行回繞
                顯示nowrap表示關(guān)閉了長行回繞
        如果你搞亂了一個(gè)選項(xiàng),你可以通過在選項(xiàng)后加上一個(gè) & 號把它恢復(fù)到默認(rèn)值。例如: :set iskeyword&
    1、禁止回繞行[nowrap]
        Vim 通常會(huì)對長行自動(dòng)回繞,以便你可以看見所有的文字。但有時(shí)最好還是能讓文字在一行中顯示完。這樣你需要左右移動(dòng)才能看到一整行。
        以下命令可以關(guān)閉行的回繞: 
            :set nowrap
        當(dāng)你移動(dòng)到那些不能顯示的文字上,Vim 會(huì)自動(dòng)向右滾動(dòng)讓你看到后面的文字,
        要一次滾 動(dòng)十個(gè)字符(左邊滾動(dòng)時(shí),離左右邊界有10個(gè)字符長度),這樣就行了:
            :set sidescroll=10
            這個(gè)命令不改變文件中的文本,只改變顯示方式。
    2、移動(dòng)命令換行[whichwrap]
        很多命令只能在一行中移動(dòng)。你可以通過 ’whichwrap’ 選項(xiàng)改變它。如下命令把這個(gè)選 項(xiàng)設(shè)為默認(rèn)值:
            :set whichwrap=b,s
            這樣,當(dāng)光標(biāo)處于行首時(shí)用 <BS> 鍵可以回到前一行的結(jié)尾;當(dāng)處于行尾時(shí)用 <Space> 鍵可以移動(dòng)到下一行的行首。
        要允許 <Left> 和 <Right> 鍵也能這樣,可以用這個(gè)命令
            :set whichwrap=b,s,<,>
        這只在普通模式中有效,要在插入模式中使 <Left> 和 <Right> 也有效,可以: 
            :set whichwrap=b,s,<,>,[,]
                使指定的左右移動(dòng)光標(biāo)的鍵在行首或行尾可以移到前一行或者后一行。連接以下這些 字符,可以讓所有指定的鍵都有此功能:
                字符 鍵            模式
                b   <BS>        普通和可視 
                s   <Space>     普通和可視
                <   <Left>      普通和可視
                >   <Right>     普通和可視
                ~   "~"         普通
                [   <Left>      插入和替換
                ]   <Right>     插入和替換

        還有一些可以用的標(biāo)志位,參見 ’whichwrap’。
    3、顯 示 TAB 鍵
        文件中有 TAB 鍵的時(shí)候,你是看不見的。要把它顯示出來:
            :set list
            現(xiàn)在 TAB 鍵顯示為 ^I,而 $顯示在每行的結(jié)尾,以便你能找到可能會(huì)被你忽略的空白字 符在哪里。
        這樣做的一個(gè)缺點(diǎn)是在有很多 TAB 的時(shí)候看起來很丑。如果你使用一個(gè)有顏色的終 端,或者使用 GUI 模式,Vim 可以用高亮顯示空格和 TAB。使用 ’listchars’ 選項(xiàng):
            :set listchars=tab:>-,trail:*
            現(xiàn)在,TAB 會(huì)被顯示成 ">---" ("-" 的個(gè)數(shù)不定) 而行尾多余的空白字符顯示成 "*"??雌饋砗枚嗔?是吧?
    4、關(guān)鍵字
    5、顯示消息的空間

三、正則

    1、正則匹配
        ^ 行首匹配
        $ 行尾匹配
        ^$ 整行匹配
        . 匹配任何單個(gè)字符
        \特殊字符   匹配 特殊字符
     2、vim中有個(gè)magic的設(shè)定。設(shè)定方法為:
            :set magic      " 設(shè)置magic 
            :set nomagic    " 取消magic 
            :h magic        " 查看幫助

         vim畢竟是個(gè)編輯器,正則表達(dá)式中包含的大量元字符如果原封不動(dòng)地引用(像perl 那樣), 勢必會(huì)給不懂正則表達(dá)式的人造成麻煩,
         比如 /foo(1) 命令, 大多數(shù)人都用它來查找foo(1)這個(gè)字符串, 
            但如果按照正則表達(dá)式來解釋,被查找的對象就成了 foo1 了。
            于是,vim就規(guī)定,正則表達(dá)式的元字符必須用反斜杠進(jìn)行轉(zhuǎn)義才行, 如上面的例子,
            如果確實(shí)要用正則表達(dá)式,就應(yīng)當(dāng)寫成 /foo\(1\) 
        magic (\m):除了 $ . * ^ 之外其他元字符都要加反斜杠。
        nomagic (\M):除了 $ ^ 之外其他元字符都要加反斜杠。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,677評論 9 468
  • macvim配置 最終效果如下: 系統(tǒng)環(huán)境 macos10.12.4 homebrew1.2.1 python3....
    Like_eb56閱讀 70,826評論 5 65
  • 出了樂器廠里的流水線,我和兄弟姐妹們就被打包到不同的包裝箱內(nèi)。根據(jù)材質(zhì)成本的高低,我們被分成專業(yè)琴、練習(xí)琴和普通琴...
    未可_Win閱讀 751評論 2 41
  • 十月推薦書籍:學(xué)習(xí)之道。我對這本書有一種相逢恨晚的感覺,若是早個(gè)幾年心理成熟如現(xiàn)在的我,看到這本書,也許現(xiàn)在的境遇...
    Peter唐明閱讀 248評論 0 0
  • 我也不知道要寫些什么,卻感覺思緒亂如麻。 卻仿佛越來越難快樂了每天,不知道自己丟了什么。也不懂自信的人憑何自信,快...
    只是故人歸閱讀 124評論 0 0

友情鏈接更多精彩內(nèi)容