• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 76,  comments - 621,  trackbacks - 0

            1)文件操作
               vi FileName                            打開(kāi)文件 FileName,并將光標(biāo)置于第一行首。
               vi +n FileName                       打開(kāi)文件 FileName,并將光標(biāo)置于第 n 行首。
               vi + FileName                         打開(kāi)文件 FileName,并將光標(biāo)置于最后一行。
               vi + /pattern File            打開(kāi)文件 File,并將光標(biāo)置于其中第一個(gè)于 pattern 匹配的字符串處。
               vi –r FileName                        在上次正用 vi 編輯 FileName 發(fā)生系統(tǒng)崩潰后,恢復(fù)FileName。
               vi File1 … Filen                       打開(kāi)多個(gè)文件,依次對(duì)之進(jìn)行編輯。


               :%!xxd                                按十六進(jìn)制查看當(dāng)前文件
                 :%!xxd -r                            從十六進(jìn)制返回正常模式

               :n1,n2 co n3                         將 n1 行到 n2 行之間的內(nèi)容拷貝到第 n3 行下。
               :n1,n2 m  m3                        將 n1 行到 n2 行之間的內(nèi)容移至第 n3 行下。
               :n1,n2 d                               將 n1 行到 n2 行之間的內(nèi)容刪除。
               :n1,n2 w  filename                 將 n1 行到 n2 行之間的內(nèi)容保存到文件 filename 中
               :n1,n2 w! Command               將文件中n1行到n2行的內(nèi)容作為 Command的輸入并執(zhí)行之,
                                                          若不指定 n1、n2,則將整個(gè)文件內(nèi)容作為 Command 的輸入。
               :r! Command                          將命令 Command 的輸出結(jié)果放到當(dāng)前行。
               :nr <文件>;                            把<文件>;插入到第n行
               :so <文件>;                            讀取<文件>;,再執(zhí)行文件里面的命令(文件中的命令應(yīng)該都是一些ex命令)
               :l1,l2w <文件>;                       把第l1和第l2行之間的文本寫(xiě)到<文件>;中去
               :w >;>; <文件>;                       添加到<文件>;末尾. 也可以使用行號(hào)
               :e!                                        重新編輯當(dāng)前文件,忽略所有的修改

             

            ·(、[、{、}、]、)對(duì)應(yīng)顯示 
               %                                       顯示當(dāng)前(、[、{ 、}、] 、)的對(duì)應(yīng)項(xiàng)
               )                                                 顯示對(duì)應(yīng)的(
               )                                                 顯示對(duì)應(yīng)的[
               ]                                                 顯示對(duì)應(yīng)的{ 
            ·(、[、{、}、]、)內(nèi)數(shù)據(jù)選擇
               daB                                     刪除{}及其內(nèi)的內(nèi)容   (在非v可視模式下)
               diB                                      刪除{}中的內(nèi)容
               ab                                       選擇()中的內(nèi)容
               ib                                        選擇()中的內(nèi)容(  不含()  )

               aB                                       選擇{}中的內(nèi)容
               iB                                        選擇{}中的內(nèi)容(  不含{}  )

            ·語(yǔ)法提示與自動(dòng)補(bǔ)齊

            ★ ;;                      插入模式下的單詞自動(dòng)完成
            ★ ;;                       行自動(dòng)完成(超級(jí)有用)

            ·設(shè)置ctags
              #ctags -f /usr/share/vim/vim63/funcs.tags  -R  /opt/j2sdk/src  /usr/src/kernels/2.6.9-5.EL-i686 

               ^p                                             自動(dòng)補(bǔ)齊上下文已有相近項(xiàng)
               ^n                                             自動(dòng)補(bǔ)齊~/.tags中的相近函數(shù)              
               ^[                                              顯示~/.tags中的光標(biāo)下的函數(shù)的原型,
                                                                按^t退出函數(shù)
               :pta 函數(shù)名                          預(yù)覽窗口快速打開(kāi)相應(yīng)函數(shù)所在文件,并將光標(biāo)定位在對(duì)應(yīng)函數(shù)的開(kāi)頭
               K                                               顯示光標(biāo)下的C函數(shù)的man說(shuō)明手冊(cè) 

            ·變量定位
               gd                                             轉(zhuǎn)到光標(biāo)下局部變量的定義處
               Gd                                             轉(zhuǎn)到光標(biāo)下全局變量的定義處
            ·編譯選項(xiàng)
               :cn                                            命令會(huì)把你帶到下一個(gè)出錯(cuò)地點(diǎn),而不考慮它在什么文件里。
               :cc                                            命令會(huì)向你顯示當(dāng)前錯(cuò)誤的編譯器輸出信息;
               :cl                                             會(huì)生成一個(gè)列有項(xiàng)目所有錯(cuò)誤的列表,以供瀏覽這些錯(cuò)誤

             

            3]光標(biāo)移動(dòng)
            ·字符
            h                                              光標(biāo)左移一個(gè)字符。
            l                                               光標(biāo)右移一個(gè)字符。

            ·字
            w 或 W                                     光標(biāo)右移一個(gè)字至字首。
            B 或 b                                       光標(biāo)左移一個(gè)字至字首。
            E 或 e                                       光標(biāo)右移一個(gè)字至字尾。

            ·句}                                              光標(biāo)移至句尾。
            (                                              光標(biāo)移至句首。

            ·段)                                              光標(biāo)移至段落開(kāi)頭。
            {                                              光標(biāo)移至段落結(jié)尾。

            ·行k 或 Ctrl+p                                 光標(biāo)上移一行。
            j 或 Ctrl+n                                  光標(biāo)下移一行。
            Enter                                        光標(biāo)下移一行。
            nG                                            光標(biāo)移至第 n 行首。
            n+                                            光標(biāo)下移 n 行。
            n-                                             光標(biāo)上移 n 行。
            n$                                            光標(biāo)移至第 n 行尾。
            0                                              光標(biāo)移至當(dāng)前行首。
            $                                              光標(biāo)移至當(dāng)前行尾。

            ·屏幕
            H                                             光標(biāo)移至屏幕頂行。
            M                                             光標(biāo)移至屏幕中間行。
            L                                              光標(biāo)移至屏幕最后行。
            Ctrl+u                                       向文件首翻半屏。
            Ctrl+d                                       向文件尾翻半屏。
            Ctrl+f                                        向文件尾翻一屏。
            Ctrl+b                                       向文件首翻一屏。
            nz                                            將第 n 行滾至屏幕頂部。不指定 n 時(shí)將當(dāng)前行滾至屏幕頂。

            4}插入

            # 在文件中插入行號(hào)(不是顯示行號(hào),是插入!)
            ★:g/^/exec “s/^/”.strpart(line(”.”.” “, 0, 4)

            ·光標(biāo)
            i                                              在光標(biāo)前插入。
            a                                             在光標(biāo)后插入。

            ·行
            I                                             在當(dāng)前行首插入。
            A                                            在當(dāng)前行尾插入。
            o                                            在當(dāng)前行之下一新行插入。
            O                                            在當(dāng)前行之上新開(kāi)一行插入。

             

            5)替換
            r                                             替換當(dāng)前字符。
            R                                            替換當(dāng)前字符及其后的字符,直至按 ESC 鍵。
            s                                            從當(dāng)前光標(biāo)位置處開(kāi)始,以輸入的文本代替指定數(shù)目的字符。
            S                                            刪除指定數(shù)目的行,并以所輸入的文本代替。

            6)修改
            ncw 或 nCW                                   修改指定數(shù)目的字符。
            nCC                                               修改指定數(shù)目的行。
            :r filename                                      將文件 filename 插入在當(dāng)前行之下

            7)查找替換

            /;;                              把狹義單詞 ; 寫(xiě)到 搜索命令 行
            /;;                               把廣義單詞 ; 寫(xiě)到 搜索命令 行

            :g/str/s/str1/str2/g
                                                                第一個(gè)g表示對(duì)每一個(gè)包括s1的行都進(jìn)行替換,
                                                                第二個(gè)g表示對(duì)每一行的所有進(jìn)行替換
                                                                包括str的行所有的str1都用str2替換
            :%s/f $/for$/g                                將每一行尾部的“f ”(f鍵和空格鍵)替換為for
            :%s/^/mv /g                                  在每一行的頭部添加“mv ”(mv鍵和空格鍵)

            :s/fred/;a/g                              替換fred成register a中的內(nèi)容,呵呵
            :g/
            # 替換一個(gè)visual區(qū)域
            # 選擇一個(gè)區(qū)域,然后輸入 :s/Emacs/Vim/ 等等,vim會(huì)自動(dòng)進(jìn)入:模式
            :'<,'>;s/Emacs/Vim/g                    前面的’<,'>;是vim自動(dòng)添加的
            # 在多個(gè)文檔中搜索
            :bufdo /searchstr
            :argdo /searchstr

             
            復(fù)制與剪切
                xp                                            交換前后兩個(gè)字符的位置
                ddp                                          上下兩行的位置交換
                :g/fred/t$                                  拷貝行,從fred到文件末尾(EOF)

             

            9)窗口操作
            :vne                                             [filename]
            :sp                                              [filename]
            :S                                                [filename]
            :new                                            [filename]
            :^w + ^r                                      交換兩個(gè)窗口的位置
            ^w =                                           窗口等寬
            :res -n                                          窗口高度減小n
            :res +n                                         窗口高度增大n
            :vert res -n
            :vert res +n

            10)DOS格式文本轉(zhuǎn)成Unix格式文本
            :1,$s/^M//g

            11)書(shū)簽
                在閱讀和編寫(xiě)大的程序文件時(shí),利用標(biāo)記(書(shū)簽)功能定位是十分有幫助的。

                將光標(biāo)移到想做標(biāo)記的位置。假如做一個(gè)名為“debug1”的標(biāo)記,那么用戶可在命令模式下輸入做標(biāo)記的命令“mdebug1”,然后敲入回車鍵,一個(gè)名為“debug1”的標(biāo)記就做好了。
                接下來(lái)用戶可以隨意將光標(biāo)移到其它的位置,當(dāng)在命令模式下輸入“`debug1”后,就能快速回到“debug1”的標(biāo)記所在行的行首。
            12)刪除操作

                :%s/r//g                                      刪除DOS方式的回車^M
                :%s= *$==                                 刪除行尾空白

                :%s/^(.*)n1/1$/                          刪除重復(fù)行

                :%s/^.{-}pdf/new.pdf/                    只是刪除第一個(gè)pdf

                :%s/;//                           又是刪除多行注釋(咦?為什么要說(shuō)「又」呢?)

               :g/^s*$/d                                       刪除所有空行
               :g!/^dd/d                                       刪除不含字符串’dd’的行
               :v/^dd/d                                        同上  (譯釋:v == g!,就是不匹配!)

               :g/str1/,/str2/d                                刪除所有第一個(gè)含str1到第一個(gè)含str2之間的行
            :v/./.,/./-1join                                   壓縮空行
            :g/^$/,/./-j                                       壓縮空行

                ndw 或 ndW                                刪除光標(biāo)處開(kāi)始及其后的 n-1 個(gè)字符。
                d0                                              刪至行首。
                d$                                              刪至行尾。
                ndd                                            刪除當(dāng)前行及其后 n-1 行。
                x 或 X                                        刪除一個(gè)字符。
                Ctrl+u                                         刪除輸入方式下所輸入的文本。
                ^R                                             恢復(fù)u的操作
                J                                                把下一行合并到當(dāng)前行尾
                V                                                       選擇一行
                ^V                                                     按下^V后即可進(jìn)行矩形的選擇了
                aw                                                     選擇單詞
                iw                                              內(nèi)部單詞(無(wú)空格)
                as                                              選擇句子
                is                                                       選擇句子(無(wú)空格)
                ap                                                     選擇段落
                ip                                                      選擇段落(無(wú)空格)
                D                                                       刪除到行尾
                x,y                                                     刪除與復(fù)制包含高亮區(qū)

               dl                                                       刪除當(dāng)前字符(與x命令功能相同)
               d0                                                      刪除到某一行的開(kāi)始位置
               d^                                                     刪除到某一行的第一個(gè)字符位置(不包括空格或TAB字符)
               dw                                                     刪除到某個(gè)單詞的結(jié)尾位置
               d3w                                                   刪除到第三個(gè)單詞的結(jié)尾位置
               db                                                     刪除到某個(gè)單詞的開(kāi)始位置
               dW                                                   刪除到某個(gè)以空格作為分隔符的單詞的結(jié)尾位置
               dB                                                     刪除到某個(gè)以空格作為分隔符的單詞的開(kāi)始位置
               d7B                                                    刪除到前面7個(gè)以空格作為分隔符的單詞的開(kāi)始位置
               d)                                                    刪除到某個(gè)語(yǔ)句的結(jié)尾位置
               d4)                                                  刪除到第四個(gè)語(yǔ)句的結(jié)尾位置
               d(                                                    刪除到某個(gè)語(yǔ)句的開(kāi)始位置
               d)                                                     刪除到某個(gè)段落的結(jié)尾位置
               d{                                                     刪除到某個(gè)段落的開(kāi)始位置
               d7{                                                   刪除到當(dāng)前段落起始位置之前的第7個(gè)段落位置
               dd                                                    刪除當(dāng)前行
               d/text                                               刪除從文本中出現(xiàn)“text”中所指定字樣的位置,
                                                               一直向前直到下一個(gè)該字樣所出現(xiàn)的位置(但不包括該字樣)之間的內(nèi)容
               dfc                   刪除從文本中出現(xiàn)字符“c”的位置,一直向前直到下一個(gè)該字符所出現(xiàn)的位置(包括該字符)之間的內(nèi)容
               dtc                                                  刪除當(dāng)前行直到下一個(gè)字符“c”所出現(xiàn)位置之間的內(nèi)容
               D                                                    刪除到某一行的結(jié)尾
               d$                                                   刪除到某一行的結(jié)尾
               5dd                                                 刪除從當(dāng)前行所開(kāi)始的5行內(nèi)容
               dL                                                   刪除直到屏幕上最后一行的內(nèi)容
               dH                                                  刪除直到屏幕上第一行的內(nèi)容
               dG                                                  刪除直到工作緩存區(qū)結(jié)尾的內(nèi)容
               d1G                                                刪除直到工作緩存區(qū)開(kāi)始的內(nèi)容
            修改命令操作
               r                                                    更改當(dāng)前字符
               cw                                                 修改到某個(gè)單詞的結(jié)尾位置
               c3w                                               修改到第三個(gè)單詞的結(jié)尾位置
               cb                                                  修改到某個(gè)單詞的開(kāi)始位置
               cW                                                 修改到某個(gè)以空格作為分隔符的單詞的結(jié)尾位置
               cB                                                   修改到某個(gè)以空格作為分隔符的單詞的開(kāi)始位置
               c7B                                                 修改到前面7個(gè)以空格作為分隔符的單詞的開(kāi)始位置
               c0                                                  修改到某行的結(jié)尾位置
               c}                                                 修改到某個(gè)語(yǔ)句的結(jié)尾位置
               c4}                                               修改到第四個(gè)語(yǔ)句的結(jié)尾位置
               c(                                                 修改到某個(gè)語(yǔ)句的開(kāi)始位置
               c)                                                  修改到某個(gè)段落的結(jié)尾位置
               c{                                                  修改到某個(gè)段落的開(kāi)始位置
               c7{                                                修改到當(dāng)前段落起始位置之前的第7個(gè)段落位置
               ctc                                                 修改當(dāng)前行直到下一個(gè)字符c所出現(xiàn)位置之間的內(nèi)容
               C                                                    修改到某一行的結(jié)尾
               cc                                                  修改當(dāng)前行
               5cc                                                修改從當(dāng)前行所開(kāi)始的5行內(nèi)容
               .                                                    重復(fù)上一次修改!
            13}Set 選項(xiàng)設(shè)置
            set all                                                    列出所有選項(xiàng)設(shè)置情況。
            set term                                                設(shè)置終端類型。
            set ignorecase                                        在搜索中忽略大小寫(xiě)。
            set list                                                   顯示制表位(^I)和行尾標(biāo)志($)。
            set number                                            顯示行號(hào)。
            set showmode                                        示用戶處在什么模式下
            set report                                              顯示由面向行的命令修改國(guó)的行數(shù)目。
            set terse                                                顯示簡(jiǎn)短的警告信息。
            set warn                                                在轉(zhuǎn)到別的文件時(shí),若沒(méi)有保存當(dāng)前文件則顯示 No write 信息。
            set autowrite                                          在“:n”和“:!”命令之前都自動(dòng)保存文件
            set nomagic                                            允許在搜索模式中,使用前面不帶\的特殊字符。
            set nowrapscan                                       禁止 vi 在搜索到達(dá)文件兩端時(shí),又從另一端開(kāi)始。
            set mesg                                                允許 vi 顯示其他用戶用 write 寫(xiě)到自己終端上的信息。

            autoindent (ai)        noai                       使新行自動(dòng)縮進(jìn),和上(下)行的位置對(duì)齊
            autoprint (ap)         ap                            每條命令之后都顯示出修改之處
            autowrite (aw)        noaw                      在:n,:!命令之前都自動(dòng)保存文件
            beautify (bf)           nobf                      在輸入的時(shí)候忽略所有的控制字符(除了制表鍵(tab),換行(newline),進(jìn)紙(formfeed))
            directory= (dir=)     /tmp                                   存放緩沖區(qū)的目錄名
            edcompatible          noedcompatible                    在替換的時(shí)候使用類ed的用法
            errorbells (eb)          errorbells                            出錯(cuò)的時(shí)候響鈴
            exrc (ex)                 noexrc                                允許在主目錄(home)外面之外放.exrc文件
            hardtabs= (ht=)       8                                      設(shè)置硬制表的邊界
            ignore case (ic)         noic                                  正規(guī)式里忽略大小寫(xiě)
            lisp                          nolisp                                打開(kāi)lisp模式
            list                          nolist                                 顯示所有的制表鍵和行的結(jié)尾
            magic                      agic                                   可以使用更多的正規(guī)表達(dá)式
            mesg                       mesg                                允許向終端發(fā)送消息
            number (nu)            nonumber                          顯示行號(hào)
            open                       open                                允許開(kāi)放和可視化
            optimize (opt)           optimize                            優(yōu)化吞吐量,打印時(shí)不發(fā)回車
            paragraphs= (para=)   IPLPPPQPPLIbp                    設(shè)置{ & }的分界符
            prompt                     prompt                             命令模式下的輸入給出:的提示符
            readonly (ro)              noro                               除非用!號(hào)否則不準(zhǔn)保存文件
            redraw                      noredraw                         當(dāng)編輯的時(shí)候重繪屏幕
            remap                       remap                              允許宏指向其他的宏
            report=                     5                                    如果影響的行數(shù)>;這個(gè)數(shù)的話就報(bào)告
            scroll                        1/2 window                       下卷屏幕時(shí)滾動(dòng)屏幕的數(shù)目, 同樣這也是z命令輸出的行數(shù)(z 輸出2倍滾屏的大小)
            sections=                 SHNHH HU                         定義節(jié)的末尾(當(dāng)使用命令[[ 和 ]] 時(shí))
            shell= (sh=)             /bin/sh                       缺省的SHELL,如果設(shè)置了環(huán)境變量SHELL的話,就使用變量
            shiftwidth= (sw=)     8                                      當(dāng)使用移動(dòng)(shift)命令時(shí)移動(dòng)的字符數(shù)
            showmatch (sm)        nosm                                顯示{, }, (, ), [, 或者 ] 的匹配情況
            showmode                noshowmode                     顯示你處在什么模式下面
            slowopen (slow)                                                插入之后不要立刻更新顯示
            tabstop= (ts=)         8                                       設(shè)置制表停止位(tabstop)的長(zhǎng)度
            taglength= (tl=)       0                                       重要標(biāo)記的字符個(gè)數(shù)(0表示所有的字符)
            tags=                      tag, /usr/lib/tags                  定義包含標(biāo)記的文件路徑
            term=                                                              設(shè)置終端類型
            terse                       noterse                               顯示簡(jiǎn)短的錯(cuò)誤信息
            timeout (to)             timeout                               一秒鐘后鍵盤(pán)映射超時(shí)
            ttytype=                                                           設(shè)置終端類型
            warn                        warn                                  顯示”No write since last change”信息
            window= (w=)                                                  可視模式下窗口的行數(shù)
            wrapmargin= (wm=)  0                               右邊距,大于0的話最右邊的單詞將折行,留出n個(gè)空白位置
            wrapscan (ws)           ws                                     查找到文件尾后再重頭開(kāi)始
            writeany (wa)            nowa                                 可以保存到任意一個(gè)文件去

            14}特殊字符
            ^                                            匹配字符串位于行首。
            $                                            匹配字符串位于行尾。
            .                                             用在模式串中,表示任何單個(gè)字符。
                                                          在命令模式下,重復(fù)上次的命令。
            *                                            在模式串中,表示其前字符可出現(xiàn)任意多次。
            []                                                   用在模式串中,表示指定方位內(nèi)字符,其中可用-表示一個(gè)字
                                                          符范圍,用^表示不在某個(gè)范圍內(nèi)的字符。
            ESC                                                從插入狀態(tài)轉(zhuǎn)換到命令狀態(tài)
            ^[                                                  功能同 ESC

            15]大小寫(xiě)轉(zhuǎn)換
            guu                                                行小寫(xiě)
            gUU                                               行大寫(xiě)
            g~~                                               行翻轉(zhuǎn)(當(dāng)然指大小寫(xiě)啦)

            guw                                              字小寫(xiě)(狹義字) 譯注:建議對(duì)比iw
            gUw                                              字大寫(xiě)(狹義字)
            g~w                                              字翻轉(zhuǎn)(狹義字)

            vEU                                               字大寫(xiě)(廣義字)
            vE~                                               字翻轉(zhuǎn)(廣義字)

            ggguG                                           把整個(gè)文章全部小寫(xiě)(ft!bt!)

            16) 跳轉(zhuǎn)足跡’.                                                  跳到最后修改的那一行 (超級(jí)有用)(ft,怎么又是這個(gè)評(píng)價(jià))
            `.                                                 不僅跳到最后修改的那一行,還要定位到修改點(diǎn)
            ;                                          依次沿著你的跳轉(zhuǎn)記錄向回跳 (從最近的一次開(kāi)始)
            ;                                           依次沿著你的跳轉(zhuǎn)記錄向前跳
            :ju(mps)                                        列出你跳轉(zhuǎn)的足跡

            17)命令歷史
            :history                                         列出歷史命令記錄
            :his c                                            命令行命令歷史
            :his s                                            搜索命令歷史
            q/                                                搜索命令歷史的窗口
            q                                                 命令行命令歷史的窗口
            :;                                         歷史命令記錄的窗口

            18]寄存器
            # 列出寄存器(Registers)
            :reg                                            顯示所有當(dāng)前的registers
            “1p                     表示引用register,1表示一個(gè)名字叫做1的register,p就是粘貼(paste)命令

            譯釋:
            “也用來(lái)定義register
            先輸入 “,表示定義register
            然后輸入名字,如0~9,a~z
            然后執(zhí)行刪除或復(fù)制命令,如dd或y,
            或者是visual模式下的d(刪除選中的部分)或y(復(fù)制選中的部分)
            則被刪除或復(fù)制的部分就被存入了這個(gè)命名的register

            觀察:一個(gè)特殊的register, “” ,里面存儲(chǔ)了一個(gè)匿名的刪除/復(fù)制
            在你執(zhí)行dd或y的時(shí)候,被作用的部分被存到了”"中

            19}命令行
            “ayy@a                                        把當(dāng)前行作為一個(gè)Vim命令來(lái)執(zhí)行
                                              譯釋:”ayy 是定義當(dāng)前行到register a,然后@a是執(zhí)行register a中存儲(chǔ)的指令

            10yy                                             copy  當(dāng)前行以下10行

            11} 排序
            :%!sort -u                                   使用sort程序排序整個(gè)文件(用結(jié)果重寫(xiě)文件)
            !1) sort -u                                   排序當(dāng)前段落 (只能在normal模式下使用!!)
            :.,+5!sort                                    排序當(dāng)前行及以下5行

            20)  列操作

            :%s= [^ ]+$=&&=                    復(fù)制最后一列
            :%s= f+$=&&=                        一樣的功能
            :%s= S+$=&&                          ft,還是一樣

            :s/(.*).*)/2″1/                         顛倒用:分割的兩個(gè)字段

            :%sw+s+){2})str1:1str2:        處理列,替換所有在第三列中的str1

            :%sw+)(.*s+)(w+)$:321:        交換第一列和最后一列 (共4列)
            ·.vimrc

            ” Use Vim settings, rather then Vi settings (much better!).
            set nocompatible

            “c風(fēng)格的縮進(jìn)
            :set expandtab   “不使用tab只使用空格
            :set cindent shiftwidth=4

            “自動(dòng)縮進(jìn)
            :set ai
            “語(yǔ)法
            “:set  filetype=java
            :set  syntax=java

            “鍵入)、] 、},顯示(、[、{
            :set showmatch

            “手工定義折疊
            :set  foldmethod=manual
            “標(biāo)簽文件位置
            set tags=/usr/share/vim/vim63/funcs.tags  

            “在插入模式下通過(guò)按[Ctrl]N自動(dòng)地將任何類、方法或者字段名補(bǔ)齊
            set complete+=k

            ” 不要用聲音煩我!
            set visualbell

            “歷史
            :set history=50

            “顯示行列位置
            :set ruler

            “設(shè)置字符編碼
            set fileencodings=gb2312
            “set encoding=euc-cn

            “設(shè)置ruler
            set ruler

            “顯示當(dāng)前命令
            set showcmd

            “incsearch
            set incsearch

            ” allow backspacing over everything in insert mode
            set backspace=indent,eol,start

            “自動(dòng)檢測(cè)文件類型
            :filetype on
            “”"”"”"”"”"快捷鍵定義”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
            if version >;= 600

              “查找
              “map  ;  /
             
              “查找函數(shù)原型
              map  ;  yiw/^\(\s\)*\(sub\)\\|\(function\)\(\s\)*;”;

              “繼續(xù)查找
              map  ;  n
              “使用;顯示類、屬性、方法列表
              map  ;  :Tlist;

              ” 用compiler定義的編譯程序來(lái)編譯當(dāng)前程序
              “map ; :make  “%”;

              “使用;來(lái)進(jìn)行php語(yǔ)法檢測(cè)
              map  ;  :!php  -l “%” ;
             
              map  ;w   :call FormatText();
             
              “查找當(dāng)前光標(biāo)下的字
              map ; /;;;
            endif
            “”"”"”"”"”"::快捷鍵定義”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”

            “”"”"”"”"”"格式化文件”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
            function   FormatText()
              :%s/\t/    /g     “把\t換成4個(gè)空格
              :%s/ *$//g        “去掉行尾空格

            endfunction

            “”"”"”"”"”"格式化文件”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”

             

            “”"”"”"”"”顯示行尾的tab和多余空格”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
            set listchars=tab:>;-,trail:~
            set list
            syntax match Trail ” +$”
            highlight def link Trail Todo

            “”"”"”"”"”::顯示行尾的tab和多余空格”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”

            function LastMod()
                  if line(”$” >; 5
                  let l = 5
                    else
                    let l = line(”$”
                 endif
               exe “1,” . l . “/CnsProgCMTime/s/CnsProgCMTime .*/CnsProgCMTime   ” . strftime(”%Y-%m-%d %H:%M:%S”.”/e”
            endfunction

            “map ; :call LastMod();

            “”"”"”"”"”"自動(dòng)加注釋的*星號(hào)”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
            “使用如/* … */ 的注釋時(shí),r在插入模式下回車時(shí)插入* ;
            “o 在普通模式下,使用 “o” 或 “O” 時(shí)插入*
            :set formatoptions=tcro

            “”"”"”"”"”"::自動(dòng)加注釋的*星號(hào)”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"

             

            vi擴(kuò)展的正則表達(dá)式

            |                    指示交替,如home|house 指匹配home或house

            ()                   用于分組,如home|house可以寫(xiě)為ho(me|use)
                                 *可以用到()上(home|house)*  可以匹配home, homehouse,househome, homehousehomehouse

            \(…\)             實(shí)際匹配的文本可以使用\1、\2等在替換命令的替換部分進(jìn)行檢索

            +                   可匹配正則表達(dá)式的一次或多次出現(xiàn),既可以是單個(gè)字符也可以是()或\(…\)括起的內(nèi)容,至少匹配一次
                                 ho(use|me)+    指至少是house或home不允許是空

            ?                   指前面正則表達(dá)式的零次或一次出現(xiàn),表示出現(xiàn)或未出現(xiàn)。如free?d  將匹配fred或freed除此不能匹配其他文本
            {…}              定義區(qū)間表達(dá)式。區(qū)間表達(dá)式描述了表示重復(fù)次數(shù)的計(jì)數(shù)數(shù)字。 同\{…\}
            {n}               (home|house){2} 只能匹配homehome, homehouse, househome, househouse
            {n,}             
            {n,m}
            {,n}

            編譯相關(guān)

            ·用編譯器來(lái)編譯 當(dāng)前文件
            :!perl -c  %
            :!php -l   %                                   用php來(lái)檢查錯(cuò)誤
            :!php -q  %                                  用php來(lái)運(yùn)行程序
            ·編譯當(dāng)前程序?yàn)閍.out并執(zhí)行該./a.out
            :!gcc   %   -o   a.out   &&   ./a.out
            執(zhí)行結(jié)果
                old umask is %#0
                new umask is %#0

            ·編譯錯(cuò)誤信息
            :cl!                                          列出所有錯(cuò)誤信息的詳細(xì)列表

            :cl                                                   列出當(dāng)前條錯(cuò)誤信息
            :cn                                          列出下一條錯(cuò)誤信息
            :cp                                          列出上一條錯(cuò)誤信息
            :cnew                                     最新錯(cuò)誤信息條數(shù)
            :cold                                       舊的錯(cuò)誤信息條數(shù)

            :cwin 或  :copen                  打開(kāi)錯(cuò)誤信息窗口
            :cclose                                關(guān)閉上面打開(kāi)的信息窗口

             

            自動(dòng)補(bǔ)齊

            CTRL-X CTRL-F         文件名
                    CTRL-X CTRL-L         整行
                    CTRL-X CTRL-D           宏定義 (并搜索所包含的文件)
                    CTRL-X CTRL-I         當(dāng)前文件以及所包含的文件
                    CTRL-X CTRL-K        詞典文件內(nèi)的單詞
                    CTRL-X CTRL-T           近義詞詞典文件內(nèi)的單詞
                    CTRL-X CTRL-]            標(biāo)記
                    CTRL-X CTRL-V           Vim 命令行

             

            C程序設(shè)計(jì)

            gd                            反色顯示光標(biāo)下局部標(biāo)識(shí)符串的所有出現(xiàn),并轉(zhuǎn)到第一次出現(xiàn)處。
            gD                            反色顯示光標(biāo)下全局標(biāo)識(shí)符串的所有出現(xiàn),并轉(zhuǎn)到第一次出現(xiàn)處。

            ————————————————————————————–

            :checkpath                   列出所有include的頭文件
            ————————————————————————————–

            [i                                  顯示函數(shù)定義
            extern __mode_t umask (__mode_t __mask) __THROW;

            ————————————————————————————–

            [+CTRL+i                    跳轉(zhuǎn)到[i所標(biāo)識(shí)的函數(shù)定義處
            ————————————————————————————–[I                                  列出當(dāng)前文件及包含文件內(nèi)的含有當(dāng)前字符的行
            ————————————————————————————–[d                                  顯示由#define所定義的標(biāo)識(shí)符的定義語(yǔ)句

            printf(|tom);
            #define tom “yaoshuyin”
            ————————————————————————————–
            CTRL+]                                跳轉(zhuǎn)到光標(biāo)當(dāng)前位置的標(biāo)簽處 (例如:一個(gè)函數(shù)的定義)。
            CTRL+T                                跳轉(zhuǎn)到執(zhí)行 CTRL-] 命令前的地方。
            :tselect                              從一連串匹配的標(biāo)簽中選出一個(gè)。

            [/                                    跳轉(zhuǎn)到注釋開(kāi)始的位置。
            ]/                                    跳轉(zhuǎn)到注釋結(jié)束的位置。

            —————————————————————-

            [#                                    返回到未閉合的 #if, #ifdef, or #else 處。
            ]#                                    前進(jìn)到未閉合的 #else 或 #endif 處。

            [(                                    返回到未閉合的 ‘(’ 處。
            ))                                    前進(jìn)到未閉合的 ‘]’ 處。

            [{                                    跳轉(zhuǎn)到最近對(duì)應(yīng)的 ‘{’ 處。
            }}                                    跳轉(zhuǎn)到最近對(duì)應(yīng)的 ‘]’ 處。
            ·字符集和進(jìn)制轉(zhuǎn)換
            ga                                   顯示光標(biāo)處字符的ascii,hex,oct,…暈菜的一堆轉(zhuǎn)換

            如 s 前按ga
            ;  115,  Hex 73,  Octal 163

            列塊操作

            ;選中列塊
              I;;                 在塊的每一行首加上string
              A;;                 在塊的每一行尾加上string
              C;;                 修改選中的列塊(即刪除并輸入新內(nèi)容 )
              c;;                 修改選中的列塊(即刪除并輸入新內(nèi)容 )
              >;                                      左移Tab寬度

            vimrc中的文件名及路徑

            如在D:\cnscnprogrames\Vim\vim63\下編輯 vi  tmp\file.java  (即D:\cnscnprogrames\Vim\vim63\tmp\file.java)
            expand(”%”                                #tmp\file.java
            expand(”%:p”                             #D:\cnscnprogrames\Vim\vim63\tmp\file.java
            expand(”%:h”                             #tmp
            expand(”%:t”                           #file.java
            expand(”%:e”                             #java   
            expand(”%:t:r”                         #file
            expand(”%:r”)                             #tmp\file

             
            ·一個(gè)簡(jiǎn)單編譯器(編譯、執(zhí)行常見(jiàn)程序)
            #vi ~/.vimrc

            “定義F9來(lái)編譯、執(zhí)行程序
            map  ;  :call ProgCompileRun() ;

            func ProgCompileRun()
                “save the current file first
                :w
             
               “取得程序后綴名 如java  php  pl  py
               let ext = expand(”%:e”)
             
               “編譯Java
               if ext == “java”
                   if expand(”%:h”) != “”
                      :!javac  % && java  -classpath  expand(”%:h”)  %:t:r
                   else
                      :!javac  % && java  %:t:r
                   endif
                   return
                endif

                “執(zhí)行php
                if ext == “php”
                   :!php %
                   return
                endif

                “編譯執(zhí)行c/cc/cpp
                if ext == “c” || ext == “cc”  || ext == “cpp”
                     :!gcc   %   -o   a.out   &&   ./a.out
                     return
                endif

                “編譯執(zhí)行perl
                if ext == “pl”
                    :!perl  -c %
                    return
                endif

                “編譯執(zhí)行python
                if ext == “py”
                    :!python   %
                    return
                endif

            endfunc

             

            posted on 2008-03-11 14:14 megax 閱讀(411) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 轉(zhuǎn)貼收集
            国内精品伊人久久久久网站| 久久久亚洲欧洲日产国码是AV| 亚洲伊人久久成综合人影院| 色欲综合久久躁天天躁蜜桃| 久久精品成人免费国产片小草 | 欧美日韩久久中文字幕| 99久久精品免费观看国产| 亚洲第一极品精品无码久久| 久久久久综合国产欧美一区二区| 久久久久久国产精品无码超碰| 狠狠色丁香久久婷婷综合图片| 精品水蜜桃久久久久久久| 精品人妻久久久久久888| 久久久久av无码免费网| 久久综合精品国产一区二区三区| 久久91综合国产91久久精品| 日韩精品久久久久久久电影蜜臀| 天天综合久久一二三区| yellow中文字幕久久网| 国产精品福利一区二区久久| 婷婷五月深深久久精品| 亚洲AV无码久久寂寞少妇| 国内精品久久久久久久久电影网| 亚洲国产精品无码久久青草| 蜜臀久久99精品久久久久久| 精品久久国产一区二区三区香蕉 | 久久久精品日本一区二区三区| 一级做a爱片久久毛片| 久久综合狠狠色综合伊人| 久久亚洲国产午夜精品理论片| 72种姿势欧美久久久久大黄蕉| 久久天堂AV综合合色蜜桃网| 狠狠色综合网站久久久久久久高清 | 久久久久久a亚洲欧洲aⅴ| 97r久久精品国产99国产精| 精品久久久久久无码专区不卡| 久久99精品久久久久婷婷| 久久午夜羞羞影院免费观看| 国产精品久久久久国产A级| 99久久无色码中文字幕 | 久久精品国产亚洲AV大全|