1. 程式人生 > >VIM使用大全

VIM使用大全

本章提供足夠的資訊使你用夠使用 Vim 來做基本的編輯。這裡提供的方法不一定是高效 
快捷的。但起碼是有效的。花些時間去練習這些命令,這是後面的知識的基礎。

|02.1|  第一次執行 Vim 
|02.2|  插入文字 
|02.3|  移動游標 
|02.4|  刪除字元 
|02.5|  撤銷與重做 
|02.6|  其它編輯命令 
|02.7|  退出 
|02.8|  尋求幫助

    下一章:|usr_03.txt| 移動 
    前一章:|usr_01.txt| 關於本手冊 
      目錄:|usr_toc.txt|

--------------------------------------------------------------------------------

*02.1*  第一次執行 Vim

啟動 Vim 的命令如下:

        gvim file.txt

在 UNIX 作業系統中,你可以在任意命令提示符下輸入這個命令。如果你用的是 Microsoft 
Windows, 啟動一個 MS-DOS 視窗,再輸入這個命令。 
    無論哪一種方式,現在 Vim 開始編輯一個名為 file.txt 的檔案了。由於這是一個新建 
檔案,你會得到一個空的視窗。螢幕看起來會象下面這樣:

        +---------------------------------------+ 
        |#                                      | 
        |~                                      | 
        |~                                      | 
        |~                                      | 
        |~                                      | 
        |"file.txt" [New file]                  | 
        +---------------------------------------+ 
                ('#"是當前游標的位置)

以波紋線(~)開頭的行表示該行在檔案中不存在。換句話說,如果 Vim 開啟的檔案不能充滿 
這個顯示的螢幕,它就會顯示以波紋線開頭的行。在螢幕的底部,有一個訊息行指示檔案 
名為 file.txt 並且說明這是一個新建的檔案。這行資訊是臨時的,新的資訊可以覆蓋它。


VIM 命 令

gvim 命令建立一個新視窗用於編輯。如果你用的是這個命令:

        vim file.txt

則編輯在命令視窗內進行。換句話說,如果你在 xterm 中執行,編輯器使用 xterm 視窗。 
如果你用的是 Microsoft Window 的 MS-DOS 視窗,編輯器使用這個 MS-DOS 視窗。兩個 
版本顯示出來的文字看起來是一樣的。但如果你用的是 gvim,就會有其他特性,如選單條。 
後面會有更多的描述。

--------------------------------------------------------------------------------

*02.2*  插入文字

Vim 是一個多模式的編輯器。就是說,在不同模式下,編輯器的響應是不同的。在普通模式 
下,你敲入的字元只是命令;而在插入模式,你敲入的字元就成為插入的文字了。 
    當你剛剛進入 Vim,它處在普通模式。通過敲入"i"命令(i是 Insert 的縮寫)可以啟動 
插入模式,這樣你就可以輸入文字了,這些文字將被插入到檔案中。不用擔心輸錯了, 你還 
能夠隨後修正它。要輸入下文的程式設計師打油詩,你可以這樣敲:

        iA very intelligent turtle 
        Found programming UNIX a hurdle

輸入"turtle"後,你通過輸入回車開始一個新行。最後,你輸入 <Esc> 鍵退出插入模式而 
回到普通模式。現在在你的 Vim 視窗中就有兩行文字了:

        +---------------------------------------+ 
        |A very intelligent turtle              | 
        |Found programming UNIX a hurdle        | 
        |~                                      | 
        |~                                      | 
        |                                       | 
        +---------------------------------------+


我 在 什 麼 模 式?

要看到你在什麼模式,輸入如下命令:

        :set showmode

你會發現當你敲入冒號後,Vim 把游標移到視窗的最後一行。那裡是你輸入“冒號命令” 
(以冒號開頭的命令)的地方,敲入回車結束這個命令的輸入(所有的冒號命令都用 
這種方式結束)。 
    現在,如果你輸入 "i" 命令,Vim 會在視窗的底部顯示 --INSERT--(中文模式 
顯示的是--插入-- —— 譯者注),這表示你在插入模式。

        +---------------------------------------+ 
        |A very intelligent turtle              | 
        |Found programming UNIX a hurdle        | 
        |~                                      | 
        |~                                      | 
        |-- INSERT --                           | 
        +---------------------------------------+

如果你輸入<Esc>回到普通模式,最後一行又變成空白。


解 決 問 題

Vim 新手常常遇到的一個問題是不知道自己在什麼模式下,可能是因為忘了,也可能 
是因為不小心敲了一個切換模式的命令。無論你在什麼模式,要回到普通模式,只 
要敲 <Esc> 就可以了。有時你需要敲兩次,如果 Vim 發出“嘀”一聲,就表示你已經 
在普通模式了。

--------------------------------------------------------------------------------

*02.3*  移動游標

回到普通模式後,你可以使用如下命令移動游標:

        h       左                                              *hjkl* 
        j       下 
        k       上 
        l       右

這些命令看起來是隨便選的。無論如何,誰聽說過用 l 表示右的?但實際上,作這些選擇 
是有理由的:移動游標是最常用的編輯器命令。而這些鍵位是在你本位的右手。也就是說: 
這種鍵位的設定使你可以以最快的速度執行移動操作(特別是當你用十指輸入的時候)。

        Note: 
        你還可以用方向鍵移動游標,但這樣會減慢你輸入的速度,因為你必須把你的手從 
        字母鍵移動到方向鍵。想象一下,你在一個小時內可要這樣做幾百次,這可要花 
        相當多的時間的。 
            而且,有一些鍵盤是沒有方向鍵的,或者放在一些很特別的地方。所以, 
        知道 hjkl 的用法在這些情況下就很有幫助了。

記住這些命令的一個方法是:h 在左邊,l 在右邊,j 指著下面。用圖表示如下:

                       k 
                   h     l 
                     j

學習這些命令的最好方法是使用它。用 "i" 命令輸入更多的文字。然後用 hjkl 鍵移動 
游標並在某些地方輸入一些單詞。別忘了用 <Esc> 切換回普通模式。|vimtutor|也是一個 
練習的好辦法。

--------------------------------------------------------------------------------

*02.4*  刪除字元

要刪除一個字元,把游標移到它上面然後輸入 "x"。(這是對以前的打字機的一種迴歸, 
那時你通過在字元上輸入xxxx刪除它) 例如,把游標移到行首,然後輸入xxxxxxx(七個x) 
可以刪除 "A very"。結果看起來這樣:

        +---------------------------------------+ 
        |intelligent turtle                     | 
        |Found programming UNIX a hurdle        | 
        |~                                      | 
        |~                                      | 
        |                                       | 
        +---------------------------------------+

現在你可以輸入新的字元了,例如,通過輸入:

        iA young <Esc>

這個命令啟動一次插入操作(那個"i"),並插入 "A young",然後退出 
插入模式(最後一個<Esc>)。結果是:

        +---------------------------------------+ 
        |A young intelligent turtle             | 
        |Found programming UNIX a hurdle        | 
        |~                                      | 
        |~                                      | 
        |                                       | 
        +---------------------------------------+


刪 除 一 行

要刪除一整行,使用 "dd" 命令,後一行會移上來填掉留下的空行:

        +---------------------------------------+ 
        |Found programming UNIX a hurdle        | 
        |~                                      | 
        |~                                      | 
        |~                                      | 
        |                                       | 
        +---------------------------------------+

刪 除 一 個 分 行 符

在 Vim 中你可以把兩行連起來,這意味著兩行間的換行符被刪除了。"J" 命令 
用於完成這個功能。 
    以下面兩行為例子:

        A young intelligent 
        turtle

把游標移到第一行,然後按 "J":

        A young intelligent turtle

--------------------------------------------------------------------------------

*02.5*  撤銷與重做

假設現在你刪得太多了。當然,你可以重新輸入需要的內容。不過,你還有一個更簡單的 
選擇。"u" 命令撤銷上一個編輯操作。看看下面這個操作:先用 "dd" 刪除一行,再敲 
"u",該行又回來了。 
    再給一個例子:把游標移到第一行的 A 上:

        A young intelligent turtle

現在輸入 xxxxxxx 刪除 "A young"。結果如下:

        intelligent turtle

輸入"u" 撤銷最後一個刪除操作。那個刪除操作刪除字元 g,所以撤銷命令恢復這個字元:

        g intelligent turtle

下一個 u 命令恢復倒數第二個被刪除的字元:

        ng intelligent turtle

下一個 u 命令恢復 u,如此類推:

        ung intelligent turtle 
        oung intelligent turtle 
        young intelligent turtle 
        young intelligent turtle 
        A young intelligent turtle

        Note: 
        如果你輸入 "u" 兩次,你的文字恢復原樣,那應該是你的 Vim 被配置在 Vi 相容 
        模式了。看這裡修正這個問題:|not-compatible|。 
        本文假定你工作在 "Vim 的方式"。你可能更喜歡舊的 Vi 的模式,但是你必須 
        小心本文中的一些小區別。


重 做

如果你撤銷得太多,你可以輸入CTRL-R(redo)回退前一個命令。換句話說,它撤銷 
一個撤銷。要看執行的例子,輸入CTRL-R兩次。字元 A 和它後面的空格就出現了:

        young intelligent turtle

有一個特殊版本的撤銷命令:"U" (行撤銷)。行撤銷命令撤銷所有在前一個編輯行 
上的操作。 輸入這些命令兩次取消前一個 "U":

        A very intelligent turtle 
          xxxx                  刪除 very

        A intelligent turtle 
                      xxxxxx            刪除turtle

        A intelligent 
                                用 "U" 恢復行 
        A very intelligent turtle 
                                用 "u" 撤銷 "U" 
        A intelligent

"U" 命令本身就是一個改變操作,"u" 命令撤銷該操作,CTRL-R 命令重做該操作。 
有點亂吧, 但不用擔心,用 "u" 和 CTRL-R 命令你可以切換到任何你編輯過的狀態。

--------------------------------------------------------------------------------

*02.6*  其它編輯命令

Vim 有大量的命令可以修改文字。參見|Q_in|和下文。這裡是一些經常用到的:

添 加

"i" 命令在游標所在字元前面插入字元。一般情況下,這就夠用了,但如果你剛好想在 
行尾加東西怎麼辦?要解決這個問題,你需要在文字後插入字元。這通過 "a" (append) 
命令實現。 
    例如,要把如下行

        and that's not saying much for the turtle. 
改為 
        and that's not saying much for the turtle!!!

把游標移到行尾的句號上。然後輸入 "x" 刪除它。現在游標處於一行的尾部了,現在輸入

        a!!!<Esc>

新增三個感嘆號到 turtle 的 "e" 後面:

        and that's not saying much for the turtle!!!


開 始 一 個 新 行

"o" 命令在游標下方建立一個新的空行,並把 Vim 切換到插入模式。然後你可以在這個 
新行內輸入文字了。 
    假定你的游標在下面兩行中第一行的某個地方:

        A very intelligent turtle 
        Found programming UNIX a hurdle

如果你現在用 "o" 命令並輸入新的文字:


        oThat liked using Vim<Esc>

結果會是:

        A very intelligent turtle 
        That liked using Vim 
        Found programming UNIX a hurdle

"O" 命令(大寫)在游標上方開啟一個新行。


指 定 次 數

假定你想向上移動 9 行,你可以輸入 "kkkkkkkkk" 或者你可以輸入"9k"。實際上, 
你可以在很多命令前面加一個數字。例如在這章的前面,你通過輸入 "a!!!<Esc>" 
增加三個感嘆號。另一個方法是使用命令 "3a!<Esc>"。次數 3 要求把後面的命令 
執行三次。同樣的,要刪除三個字元,可以使用 "3x"。次數總是放在要被處理多次 
的命令的前面。

--------------------------------------------------------------------------------

*02.7*  退出

使用 "ZZ" 命令可以退出。這個命令儲存檔案並退出。 
        Note: 
        與其他編輯器不一樣,Vim 不會自動建立一個備份檔案。如果你輸入 "ZZ", 
        你的修改立即生效並且不能恢復。你可以配置 Vim 讓它產生一個備份檔案, 
        參見|07.4|。


放 棄 修 改

有時你會做了一系列的修改才突然發現還不如編輯之前。不用擔心,Vim 有“放棄修改 
並退出”的命令,那就是:

        :q!

別忘了按回車使你的命令生效。

這個命令執行的細節是:命令有三部分,包括冒號(:),它使 Vim 進入命令模式, 
q 命令,它告訴 Vim 退出,而感嘆號是強制命令修飾符。 
    這裡,強制命令修飾符是必要的,它強制性地要求 Vim 放棄修改並退出。如果你只是 
輸入":q",Vim 會顯示一個錯誤資訊並拒絕退出:

        E37: No write since last change (use ! to override)

通過指定強制執行,你實際上在告訴 Vim:“我知道我所做的看起來很傻,但我長大了, 
知道自己在做什麼。”

如果你放棄修改後還想重新編輯,用 ":e!" 命令可以重新裝載原來的檔案。

--------------------------------------------------------------------------------

*02.8*  尋求幫助

所有你想知道的東西,都可以在 Vim 幫助檔案中找到答案,隨便問! 
    要獲得一般的幫助用這個命令:

        :help

你還可以用第一個功能鍵 <F1>。如果你的鍵盤上有一個 <Help> 鍵,可能也有效。 
    如果你不指定主題,":help" 將命令顯示一個總攬的幫助視窗。Vim 的作者在幫助系 
統方面使用了一個很聰明的方案(也許可以說是很懶惰的方案):他們用一個普通的編輯窗 
口來顯示幫助。你可以在幫助視窗中使用任何普通的 Vim 命令移動游標。所以,h,j,k 
和 l 還是表示左,下,上和右。 
    要退出幫助視窗,用退出一個普通視窗的命令:"ZZ"。這隻會退出幫助視窗,而不會 
退出 Vim。

當你閱讀幫助的時候,你會發現有一些文字被一對豎線括起來了(例如|help|)。這表示 
一個超級連結。如果你把游標移到這兩個豎線之間並按 CTRL-](標籤跳轉命令), 幫助 
系統會把你引向這個超級連結指向的主題。(由於不是本章的重點,這裡不詳細討論, 
Vim 對超級連結的術語是 "標籤"(tag),所以 CTRL-] 實際是跳轉到游標所在單詞為名 
的標籤所在的位置。) 
    跳轉幾次以後,你可能想回到原來的地方。CTRL-T(標籤退棧)把你送回前一個 
跳轉點。CTRL-O (跳轉到前一個位置)也能完成相同的功能。 
    在幫助螢幕的頂上,有一個符號: *help.txt*。這個名字被幫助系統用來定義一個標籤 
(也就是超級連結的目標)。 
    參見|29.1|可以瞭解更多關於標籤的內容。

要獲得特定主題的幫助,使用如下命令:

        :help {主題}

例如,要獲得 "x" 命令的幫助,輸入如下命令:

        :help x

要知道如何刪除文字,使用如下命令:

        :help deleting

要獲得所有命令的幫助索引,使用如下命令:

        help index

如果你需要獲得一個包含控制字元的命令的幫助(例如 CTRL-A),你可以在它前面 
加上字首"CTRL-"。

        help CTRL-A

Vim 有很多模式。在預設情況下,幫助系統顯示普通模式的命令。例如,如下命令顯示 
普通模式的 CTRL-H 命令的幫助:

        :help CTRL-H

要表示其他模式,可以使用模式字首。如果你需要插入模式的命令幫助,使用 "i_" 前 
綴。例如對於 CTRL-H,你可以用如下命令:

        :help i_CTRL-H

當你啟動 Vim,你可以使用一些命令列引數。這些引數以短橫線開頭(-)。例如知道要-t 
這個引數是幹什麼用的,可以使用這個命令:

        :help -t

Vim 有大量的選項讓你定製這個編輯器。如果你要獲得選項的幫助,你需要把它括在一個 
單引號中。例如,要知道 'number' 這個選項幹什麼的,使用如下命令:

        :help 'number'

如果你看到一個你不能理解的錯誤資訊,例如:

        E37: No write since last change (use ! to override)

你可以使用使用E開頭的錯誤號找關於它的幫助:

        :help E37 
移 動


在你插入或者刪除之前,你需要移動到合適的位置。Vim 有一大堆命令可以移動游標。 
本章向你介紹最重要的那些。你可以在 |Q_lr| 下面找到這些命令的列表。

|03.1|  詞移動 
|03.2|  移動到行首或行尾 
|03.3|  移動到指定的字元 
|03.4|  括號匹配 
|03.5|  移動到指定的行 
|03.6|  確定當前位置 
|03.7|  滾屏 
|03.8|  簡單查詢 
|03.9|  簡單的查詢模式 
|03.10| 使用標記

    下一章:|usr_04.txt|  做小改動 
    前一章:|usr_02.txt|  Vim 初步 
      目錄:|usr_toc.txt|

--------------------------------------------------------------------------------

*03.1*  詞移動

要移動游標向前跳一個詞,可以使用 "w" 命令。象大多數 Vim 命令一樣,你可以在命令前 
加數字字首表示把這個命令重複多次。例如,"3w" 表示向前移動3個單詞。用圖表示如下:

        This is a line with example text 
          --->-->->-----------------> 
           w  w  w    3w

要注意的是,如果游標已經在一個單詞的詞首,"w" 移動到下一個單詞的詞首。 
    "b" 命令向後移動到前一個詞的詞首:

        This is a line with example text 
        <----<--<-<---------<--- 
           b   b b    2b      b

還有一個 "e" 命令可以移到下一個單詞的詞末,而 "ge" 則移動到前一個單詞的末尾:

        This is a line with example text 
           <-   <--- ----->   ----> 
           ge    ge     e       e

如果你在一行的最後一個單詞,"w" 命令將把你帶到下一行的第一個單詞。這樣你可以 
用這個命令在一段中移動,這比使用 "l" 要快得多。"b" 則在反方向完成這個功能。

一個詞以非單詞字元結尾,例如 ".","-" 或者 ")"。要改變 Vim 使用的 "分詞符", 
請參見 'iskeyword' 選項。 
    還可以以 "空白字元" 分割的 "大單詞" 移動。這不是我們通常意義的 "單詞”。這 
就是為什麼稱之為 "大單詞" 的原因。如下圖所示:

               ge      b          w                             e 
               <-     <-         --->                          ---> 
        This is-a line, with special/separated/words (and some more). 
           <----- <-----         -------------------->         -----> 
             gE      B                   W                       E 
               ge      b          w                             e

組合運用這些大寫和小寫的命令,你可以很快地在一段中前後移動。

--------------------------------------------------------------------------------

*03.2*  移動到行首或行尾

"$" 命令把游標移動到當前行行尾。如果你的鍵盤上有 <End> 鍵,也可以完成相同的功能。

"^" 命令把游標移動到當前行的第一個非空字元,而 "0" 命令則移到一行的第一個字元, 
<Home> 鍵也可以完成相同的功能。圖示如下:

                  ^ 
             <------------ 
        .....This is a line with example text 
        <-----------------   ---------------> 
                0                  $

(這裡 "....." 表示空白字元)

    象大多數移動命令一樣,"$" 命令接受個次數字首。但是 "移動到一行的行尾n次" 沒 
有什麼意義,所以它會使游標移動到另一行。例如,"1$" 移動到當前行的行尾,而 
"2$" 則移動到下一行的行尾,如此類推。 
    "0" 命令不能加個數字首,因為 "0" 本身就是個數字。而且,出人意料地是,"^" 命 
令也不支援數字字首。

--------------------------------------------------------------------------------

*03.3*  移動到一個指定的字元

單字元查詢命令是最有用的移動命令之一。"fx" 命令向前查詢本行中的字元 x。提示: 
"f" 表示 "Find"。 
    例如,假定你在下面例子行的行首,而你想移動到單詞 "human" 的h那裡。只要執行 
命令 "fh" 即可:

        To err is human.  To really foul up you need a computer. 
        ---------->---------------> 
            fh           fy

這個例子還演示了用 "fy" 命令移動到 "really" 的詞尾。 
    你可以在這個命令前面加數字字首,所以,你可以用 "3fl" 命令移動到 "foul" 的 
"l":

        To err is human.  To really foul up you need a computer. 
                  ---------------------> 
                           3fl

"F" 命令用於向左查詢:

        To err is human.  To really foul up you need a computer. 
                  <--------------------- 
                            Fh

"tx" 命令與 "fx" 相似,但它只把游標移動到目標字元的前一個字元上。提示:"t" 
表示 "To"。這個命令的反向版本是 "Tx"。

        To err is human.  To really foul up you need a computer. 
                   <------------  -------------> 
                        Th              tn

這四個命令可以通過 ";" 命令重複,"," 命令則用於反向重複。無論用哪個命令,游標 
永遠都不會移出當前行,哪怕是這兩行是連續的一個句子。

有時你啟動了一個查詢命令後才發現自己執行了一個錯誤的命令。例如,你啟動了一個 
"f" 命令後才發現你本來想用的是 "F"。要放棄這個查詢,輸入 <Esc>。所以 
"f<Esc>" 取消一個向前查詢命令而不做任何操作。 Note: <Esc> 可以中止大部分命令, 
而不僅僅是查詢。

--------------------------------------------------------------------------------

*03.4*  括號匹配

當你寫程式的時候,你經常會遇到巢狀的()結構。這時,"%" 是一個非常方便的命令 
了:它能匹配一對括號。如果游標在 "(" 上,它移動到對應的 ")" 上,反之,如果它在 
")" 上,它移動到 "(" 上。

                            % 
                         <-----> 
                if (a == (b * c) / d) 
                   <----------------> 
                            %

這個命令也可適用於 [] 和 {}。(可用'matchpairs'選項定義)

當游標不在一個有用的字元上,"%" 會先向前找到一個。比如當游標停留在上例中的行 
首時,"%" 會向前查詢到第一個 "("。然後會移動到它的匹配處。

                if (a == (b * c) / d) 
                ---+----------------> 
                           %

--------------------------------------------------------------------------------

*03.5*  移動到指定的行

如果你是一個 C 或者 C++ 程式設計師,你對下面這樣的錯誤資訊應該非常熟悉:

        prog.c:33: j   undeclared (first use in this function)

這表示你可能要移動到 33 行去作一些修改了。那麼怎樣找到 33 行?一個辦法是執行 
"9999k" 命令移到檔案頭,再執行 "32j" 下移到32行。這不是一個好辦法,但肯定有效。 
更好的方法是使用 "G" 命令。加上一個次數字首,這個命令可以把你送到指定的行。 
例如,"33G" 把你送到 33 行。(要用更好的方法在編譯器的錯誤列表中移動,參見 
|usr_30.txt| 的 ":make" 命令部分。) 
    如果沒有數字字首,"G" 命令把游標移動到文末。移動到文首的命令是 "gg"。"1G" 
也能完成這個功能,但稍複雜一點。

            |   first line of a file   ^ 
            |   text text text text    | 
            |   text text text text    |  gg 
        7G  |   text text text text    | 
            |   text text text text 
            |   text text text text 
            V   text text text text    | 
                text text text text    |  G 
                text text text text    | 
                last line of a file    V

另一個定位行的方法是使用帶數字字首的 "%" 命令。例如,"50%" 移動到檔案的中間, 
而 "90%" 移到差不多結尾的位置。

前面的描述假定你想移動到檔案中的某一行,而不在乎它是否可見。那麼如何移動到視野 
之內的一行呢?下圖演示了三個可以使用的命令:

                        +---------------------------+ 
                H -->   | text sample text          | 
                        | sample text               | 
                        | text sample text          | 
                        | sample text               | 
                M -->   | text sample text          | 
                        | sample text               | 
                        | text sample text          | 
                        | sample text               | 
                L -->   | text sample text          | 
                        +---------------------------+

提示:"H" 表示 "Home","M" 表示 "Middle" 而 "L" 表示 "Last"。

--------------------------------------------------------------------------------

*03.6*  確定當前位置

要確定你在檔案中的位置,有三種方法:

1.  使用 CTRL-G 命令,你會獲得如下訊息(假定 'ruler' 選項已經被關閉):

        "usr_03.txt" line 233 of 650 --35%-- col 45-52

    這裡顯示了你正在編輯的檔案的名稱,你所處的當前行的行號,全文的總行數,游標 
    以前的行佔全文的百分比,和你所處的列的列號。 
    有時你會看到一個分開的兩個列號。例如,"col 2-9"。這表示游標處於第二個字元 
    上,但由於使用了製表符,在螢幕上的位置是 9。

2. 設定 'number' 選項。這會在每行的前面加上一個行號:

        :set number

    要重新關閉這個選項:

        :set nonumber

    由於'number'是一個布林型別的選項,在它前面加上 "no" 表示關閉它。布林選項只會 
    有兩個值,on 或者 off。 
      Vim 有很多選項,除了布林型別的,還有數字或者字串型別的。在用到的時候會給 
    處一些例子的。

3.  設定 'ruler' 選項。這會在 Vim 視窗的右下角顯示當前游標的位置:

        :set ruler

使用 'ruler' 的好處是它不佔多少地方,從而可以留下更多的地方給你的文字。

--------------------------------------------------------------------------------

*03.7*  滾屏

CTRL-U 命令向下滾動半屏。想象一下通過一個視口看著你的文字,然後把這個視口向上移動 
該視口的一半高度。這樣,視窗移動到當前文字的上面,而文字則移到視窗的下面。不用擔心 
記不住那邊是上。很多人都是這樣。 
    CTRL-D命令把視窗向下移動半屏,所以把文字向上移動半屏。

                                       +----------------+ 
                                       | some text      | 
                                       | some text      | 
                                       | some text      | 
        +---------------+              | some text      | 
        | some text     |  CTRL-U  --> |                | 
        |               |              | 123456         | 
        | 123456        |              +----------------+ 
        | 7890          | 
        |               |              +----------------+ 
        | example       |  CTRL-D -->  | 7890           | 
        +---------------+              |                | 
                                       | example        | 
                                       | example        | 
                                       | example        | 
                                       | example        | 
                                       +----------------+

每次滾一行的命令是 CTRL-E(上滾)和 CTRL-Y(下滾)。可以把 CTRL-E 想象為是多給你 
一行(one line Extra)。

向前滾動一整屏的命令是 CTRL-F(實際上會留下兩行不滾動)。反向的命令是 CTRL-B。 
幸運地,CTRL-F 是向前 (forward) 滾動,CTRL-B 是向後 (backward) 滾動,這比較好記。

移動中的一個常見問題是,當你用 "j" 向下移動的時候,你的游標會處於螢幕的底部, 
你可能希望,游標所在行處於螢幕的中間。這可以通過 "zz" 命令實現。

        +------------------+             +------------------+ 
        | some text        |             | some text        | 
        | some text        |             | some text        | 
        | some text        |             | some text        | 
        | some text        |   zz  -->   | line with cursor | 
        | some text        |             | some text        | 
        | some text        |             | some text        | 
        | line with cursor |             | some text        | 
        +------------------+             +------------------+

"zt" 把游標所在行移動到螢幕的頂部,而 "zb" 則移動到螢幕的底部。Vim 中還有另外 
一些用於滾動的命令,可以參見|Q_sc|。要使游標上下總保留有幾行處於視口中用作上下 
文,可以使用'scrolloff'選項。

--------------------------------------------------------------------------------

*03.8*  簡單查詢

查詢命令是 "/String"。例如,要查詢單詞 "include",使用如下命令:

        /include

你會注意到,當你輸入 "/" 的時候,游標移到了 Vim 視窗的最後一行,這與 "冒號命令" 
一樣,在那裡你可以輸入要查詢的字串。你可以使用退格鍵 (退格箭頭或<BS>) 進行 
修改,如果需要的時候還可以使用 <Left> 和 <Right> 鍵。 
   使用 <Enter> 開始執行這個命令。

        Note: 
        字元.*[]^%//?~$有特殊含義。如果你要查詢它們,需要在前面加上一個 ""。 
        請參見下文。

要查詢下一個匹配可以使用 "n" 命令。用下面命令查詢游標後的第一個 #include:

        /#include

然後輸入 "n" 數次。你會移動到後面每一個 #include。如果你知道你想要的是第幾個, 
可以在這個命令前面增加次數字首。這樣,"3n" 表示移動到第三個匹配點。要注意, 
"/" 不支援次數字首。

"?" 命令功能與 "/" 的功能類似,但是是反方向查詢:

        ?word

"N" 命令在反方向重複前一次查詢。因此,在 "/" 命令後執行 "N" 命令是向後查詢, 
在 "?" 命令後執行 "N" 命令是向前查詢。


忽 略 大 小 寫

通常,你必須區分大小寫地輸入你要查詢的內容。但如果你不在乎大小寫。可以設定 
'ignorecase' 選項:

        :set ignorecase

如果你現在要查詢 "word",它將匹配 "word" 和 "WORD"。如果想再次區分大小寫:

        :set noignorecase


歷 史 記 錄

假設你執行了三個查詢命令:

        /one 
        /two 
        /three

現在,讓我們輸入 "/" 啟動一次查詢,但先不按下回車鍵。現在按 <Up>(上箭頭),Vim 
把 "/three" 放到你的命令列上。回車就會從當前位置查詢 "three"。如果你不回車, 
繼續按 <Up>,Vim 轉而顯示 "/two",而下一次 <Up> 變成 "/one"。 
    你還可以用 <Down> 命令在歷史記錄中反向查詢。

如果你知道前面用過的一個模式以什麼開頭,而且你想再使用這個模式的話,可以在輸入 
<Up> 前輸入這個開頭。繼續前面的例子,你可以輸入 "/o<Up>",Vim 就會在命令列上 
顯示 "/one"。

冒號開頭的命令也有歷史記錄。這允許你取回前一個命令並再次執行。這兩種歷史記錄 
是相互獨立的。


在 文 本 中 查 找 一 個 單 詞

假設你在文字中看到一個單詞 "TheLongFunctionName" 而你想找到下一個相同的單詞。 
你可以輸入 "/TheLongFunctionName",但這要輸入很多東西。而且如果輸錯了,Vim 
是不可能找到你要找的單詞的。 
    有一個簡單的方法:把游標移到那個單詞下面使用 "*" 命令。Vim 會取得游標上 
的單詞並把它作為被查詢的字串。 
    "#" 命令在反向完成相同的功能。你可以在命令前加一個次數:"3*" 查詢游標下 
單詞第三次出現的地方。


查 找 整 個 單 詞

如果你輸入 "/the",你也可能找到 "there"。要找到以 "the" 結尾的單詞,可以用:

        /the>

相關推薦

Linux學習—vim大全

狀態 設置 swp文件 ext fstab style 左右 使用 三種 vim--目錄vim的使用退出模式vim的三種主要模式命令模式vim的個性化配置產生.swp文件的深入解析一、vim的使用 vim + filename 編輯文件,當文件不存在

linux系統編輯神器 -vim用法大全

it 運維 vim編輯器文本編輯器,字處理器ASCIInano, sedvi: Visual Interfacevim: VI iMproved全屏編輯器,模式化編輯器vim模式:編輯模式(命令模式)輸入模式末行模式模式轉換:編輯-->輸入:i: 在當前光標所在字符的前面,轉為輸入模式; a:

vim快捷鍵及命令大全

定位游標: G 將游標定位到文字末尾行首 gg 將游標定位到文字啟始位置 0 (這個是零)定位到游標所在行行首 $ 定位到游標所在行行尾 數字G 跳轉到第n行 移動游標: h 向左移動 l 向右移動 j

VIM命令大全

在命令狀態下對當前行用== (連按=兩次), 或對多行用n==(n是自然數)表示自動縮排從當前行起的下面n行。你可以試試把程式碼縮排任意打亂再用n==排版,相當於一般IDE裡的code format。使用gg=G可對整篇程式碼進行排版。 vim 選擇文字

進階Linux高手必懂的Vim命令大全

命令歷史 以:和/開頭的命令都有歷史紀錄,可以首先鍵入:或/然後按上下箭頭來選擇某個歷史命令。 啟動vim 在命令列視窗中輸入以下命令即可 vim 直接啟動vim vim filename 開啟vim並建立名為filename的檔案 檔案命令 開啟單個檔案 v

Linux vi/vim命令大全

命令歷史 以:和/開頭的命令都有歷史紀錄,可以首先鍵入:或/然後按上下箭頭來選擇某個歷史命令。 啟動vim 在命令列視窗中輸入以下命令即可 $ vim //直接啟動vim $ vim filename

VIM外掛大全,另外附VIM IDE 一鍵安裝包

之前發現沒圖片,常言道,沒圖說個JB,發一下:  這個是在xshell的效果,YY一下,在github上放置了vimide所需的一鍵安裝的外掛和一鍵安裝包,移除了導致卡死的vjde,在ubuntu,fedora,miint上測試通過,需要安裝vim-script

vim 操作命令大全

vim提供了:make來編譯程式,預設呼叫的是make, 如果你當前目錄下有makefile,簡單地:make即可。如果你沒有make程式,你可以通過配置makeprg選項來更改make呼叫的程式。 如果你只有一個abc.Java檔案,你可以這樣設定:set makeprg=javac\ abc.java 然

vim編輯器操作命令大全-絕對全

學習連結: vim命令大全 http://blog.csdn.net/scaleqiao/article/details/45153379 vim命令小技巧 http://www.codeceo.com/article/useful-vim-command.html

Linux vim命令大全

前言 首先介紹一下 vim vi 是 unix/linux 下極為普遍的一種文字編輯器, 大部分機器上都有 vi 有各種變種, 在不同的機器上常用不同的變種軟體 其中 vim 比較好用也用得比較廣泛 vim 是 Vi IMproved 的縮寫, 表示更好的 vi 本文就

vim操作大全

vim是我最喜歡的編輯器,也是Linux下第二強大的編輯器。 雖然emacs是公認的世界第一,我認為使用emacs並沒有使用vi進行編輯來得高效。 如果是初學vi,執行一下vimtutor是個聰明的決定。 (如果你的系統環境不是中文,而你想使用中文的vimtutor,就執

vim 設定大全,超級全

1.獲取幫助  WHAT PREPEND    EXAMPLE ~       Normal mode command      (nothing)   :help x       Visual mode command  v_   :help v_u       Insert mode command 

linux中Vim命令大全

命令歷史 以:和/開頭的命令都有歷史紀錄,可以首先鍵入:或/然後按上下箭頭來選擇某個歷史命令。 啟動vim 在命令列視窗中輸入以下命令即可 vim 直接啟動vim vim filename 開啟vim並建立名為filename的檔案 檔案命令 開啟單個檔案

VIM使用大全

本章提供足夠的資訊使你用夠使用 Vim 來做基本的編輯。這裡提供的方法不一定是高效  快捷的。但起碼是有效的。花些時間去練習這些命令,這是後面的知識的基礎。 |02.1|  第一次執行 Vim  |02.2|  插入文字  |02.3|  移動游標  |

vim快捷鍵整理大全

前言:在linux下學習了很久,可是操作卻還是小學生一樣,唉,於是把整理的linux下vim的命令分享給大家,有了這些快捷鍵相信相信大家在linux下學習都會得心應手的。 一、移動游標 1、左移h

vi 與 vim 快捷按鍵說明大全

1 一般指令模式 1.1 移動遊標 按鍵 說明 h 或向左方向鍵 遊標向左移動一個字元 j 或向下方向鍵 遊標向下移動一個字元 k 或向上方向鍵 遊標向上移動一個字元 l 或向右方向鍵 遊

VIM命令大全(圖+文)

mark sco 17. 光標位置 數據 自動跳轉 技術 數字 ref 在命令狀態下對當前行用== (連按=兩次), 或對多行用n==(n是自然數)表示自動縮進從當前行起的下面n行。你可以試試把代碼縮進任意打亂再用n==排版,相當於一般IDE裏的code format

Linux - vim安裝 配置與使用

格式 only ctx net height border term mona 方便 一 Vim 簡單介紹 曾經一直用vi,近期開始使用 vim,以下將兩者做一下比較。 vi和vim都是多模式編輯器,不同的是vim 是vi的升級版本號,它不僅兼容vi的全部指令,並且

keycode 大全,javascript 再也不用操心我不知道的keycode了

end acer als doc rac amd capture 瀏覽器 ket keycode 8 = BackSpace BackSpace keycode 9 = Tab Tab keycode 12 = Clear keycode 13 =

端口占用解決方案大全,最方便快速的解除端口被占用,強制解除占用端口

強制解除端口占用 切換mysql windows 綠色環境搭建 解除端口占用 強制解除端口占用可以使用我最新開發的新版本PHPWAMP8.8.8.8(截止目前最新版)PHPWAMP最新版支持自定義Mysql版本和自定義PHP版本,是目前唯一集成了VC運行庫的真正純綠色軟件。最新版PHPWA