vim使用

===============================================================================
= 歡 迎 閱 讀 《 V I M 教 程 》 —— 版本 1.7 =
===============================================================================

 Vim 是一個(gè)具有很多命令的功能非常強(qiáng)大的編輯器。限于篇幅,在本教程當(dāng)中
 就不詳細(xì)介紹了。本教程的設(shè)計(jì)目標(biāo)是講述一些必要的基本命令,而掌握好這
 些命令,您就能夠很容易地將 Vim 當(dāng)作一個(gè)通用編輯器來(lái)使用了。

 完成本教程的內(nèi)容大約需要25-30分鐘,取決于您訓(xùn)練的時(shí)間。

 注意:
 每一節(jié)的命令操作將會(huì)更改本文。推薦您復(fù)制本文的一個(gè)副本,然后在副本上
 進(jìn)行訓(xùn)練(如果您是通過(guò)"vimtutor"來(lái)啟動(dòng)教程的,那么本文就已經(jīng)是副本了)。

 切記一點(diǎn):本教程的設(shè)計(jì)思路是在使用中進(jìn)行學(xué)習(xí)的。也就是說(shuō),您需要通過(guò)
 執(zhí)行命令來(lái)學(xué)習(xí)它們本身的正確用法。如果您只是閱讀而不操作,那么您可能
 會(huì)很快遺忘這些命令的!

 好了,現(xiàn)在請(qǐng)確定您的Shift-Lock(大小寫(xiě)鎖定鍵)還沒(méi)有按下,然后按鍵盤(pán)上
 的字母鍵 j 足夠多次來(lái)移動(dòng)光標(biāo),直到第一節(jié)的內(nèi)容能夠完全充滿(mǎn)屏幕。
            第一講第一節(jié):移動(dòng)光標(biāo)


         ** 要移動(dòng)光標(biāo),請(qǐng)依照說(shuō)明分別按下 h、j、k、l 鍵。 **

         ^
         k          提示: h 的鍵位于左邊,每次按下就會(huì)向左移動(dòng)。
       < h   l >           l 的鍵位于右邊,每次按下就會(huì)向右移動(dòng)。
         j             j 鍵看起來(lái)很象一支尖端方向朝下的箭頭。
         v

  1. 請(qǐng)隨意在屏幕內(nèi)移動(dòng)光標(biāo),直至您覺(jué)得舒服為止。

  2. 按下下行鍵(j),直到出現(xiàn)光標(biāo)重復(fù)下行。

---> 現(xiàn)在您應(yīng)該已經(jīng)學(xué)會(huì)如何移動(dòng)到下一講吧。

  3. 現(xiàn)在請(qǐng)使用下行鍵,將光標(biāo)移動(dòng)到第一講第二節(jié)。

提示:如果您不敢確定您所按下的字母,請(qǐng)按下<ESC>鍵回到正常(Normal)模式。
      然后再次從鍵盤(pán)輸入您想要的命令。

提示:光標(biāo)鍵應(yīng)當(dāng)也能正常工作的。但是使用hjkl鍵,在習(xí)慣之后您就能夠更快
      地在屏幕內(nèi)四處移動(dòng)光標(biāo)。真的是這樣!

        第一講第二節(jié):VIM的進(jìn)入和退出

!! 特別提示:敬請(qǐng)閱讀本一節(jié)的完整內(nèi)容,然后再執(zhí)行以下所講解的命令。

  1. 按<ESC>鍵(這是為了確保您處在正常模式)。

  2. 然后輸入: :q! <回車(chē)>
    這種方式的退出編輯器會(huì)丟棄您進(jìn)入編輯器以來(lái)所做的改動(dòng)。

  3. 如果您看到了命令行提示符,請(qǐng)輸入能夠帶您回到本教程的命令,那就是:
    vimtutor <回車(chē)>

  4. 如果您自信已經(jīng)牢牢記住了這些步驟的話(huà),請(qǐng)從步驟1執(zhí)行到步驟3退出,然
    后再次進(jìn)入編輯器。

提示: :q! <回車(chē)> 會(huì)丟棄您所做的任何改動(dòng)。幾講之后您將學(xué)會(huì)如何保存改動(dòng)到文件。

  1. 將光標(biāo)下移到第一講第三節(jié)。
            第一講第三節(jié):文本編輯之刪除


   ** 在正常(Normal)模式下,可以按下 x 鍵來(lái)刪除光標(biāo)所在位置的字符。**

  1. 請(qǐng)將光標(biāo)移動(dòng)到本節(jié)中下面標(biāo)記有 ---> 的那一行。

  2. 為了修正輸入錯(cuò)誤,請(qǐng)將光標(biāo)移至準(zhǔn)備刪除的字符的位置處。

  3. 然后按下 x 鍵將錯(cuò)誤字符刪除掉。

  4. 重復(fù)步驟2到步驟4,直到句子修正為止。

---> The ccow jumpedd ovverr thhe mooon.

  5. 好了,該行已經(jīng)修正了,下面是第一講第四節(jié)。

特別提示:在瀏覽本教程時(shí),不要強(qiáng)行記憶。記住一點(diǎn):在使用中學(xué)習(xí)。



         第一講第四節(jié):文本編輯之插入


 ** 在正常模式下,可以按下 i 鍵來(lái)插入文本。**
  1. 請(qǐng)將光標(biāo)移動(dòng)到本節(jié)中下面標(biāo)記有 ---> 的第一行。

  2. 為了使得第一行內(nèi)容雷同于第二行,請(qǐng)將光標(biāo)移至文本第一個(gè)準(zhǔn)備插入字符
    的位置。

  3. 然后按下 i 鍵,接著輸入必要的文本字符。

  4. 每個(gè)錯(cuò)誤修正完畢后,請(qǐng)按下 <ESC> 鍵返回正常模式。
    重復(fù)步驟2至步驟4以便修正句子。

---> There is text misng this .
---> There is some text missing from this line.

  1. 如果您對(duì)文本插入操作已經(jīng)很滿(mǎn)意,請(qǐng)接著閱讀下面的第一講第五節(jié)。
             第一講第五節(jié):文本編輯之添加


            ** 按 A 鍵以添加文本。 **

  1. 移動(dòng)光標(biāo)到下面第一個(gè)標(biāo)記有 ---> 的一行。
     光標(biāo)放在那一行的哪個(gè)字符上并不重要。

  2. 按 A 鍵輸入必要的添加內(nèi)容。

  3. 文本添加完畢后,按 <ESC> 鍵回到正常模式。

  4. 移動(dòng)光標(biāo)到下面第二個(gè)標(biāo)記有 ---> 的一行。重復(fù)步驟2和步驟3以改正這個(gè)句子。

---> There is some text missing from th
     There is some text missing from this line.
---> There is also some text miss
     There is also some text missing here.

  5. 當(dāng)您對(duì)添加文本操作感到滿(mǎn)意時(shí),請(qǐng)繼續(xù)學(xué)習(xí)第一講第六節(jié)。

         第一講第六節(jié):編輯文件

        ** 使用 :wq 以保存文件并退出。 **

特別提示:在執(zhí)行以下步驟之前,請(qǐng)先讀完整個(gè)小節(jié)!

  1. 如您在第一講第二節(jié)中所做的那樣退出本教程: :q!
    或者,如果您可以訪(fǎng)問(wèn)另一個(gè)終端,請(qǐng)?jiān)谀抢飯?zhí)行以下操作。

  2. 在 shell 的提示符下輸入命令: vim tutor <回車(chē)>
    'vim'是啟動(dòng) Vim 編輯器的命令,'tutor'是您希望編輯的文件的名字。
    請(qǐng)使用一個(gè)可以改動(dòng)的文件。

  3. 使用您在前面的教程中學(xué)到的命令插入刪除文本。

  4. 保存改動(dòng)過(guò)的文件并退出 Vim,按這些鍵: :wq <回車(chē)>

  5. 如果您在步驟1中已經(jīng)退出 vimtutor,請(qǐng)重啟 vimtutor 移動(dòng)到下面的小結(jié)一節(jié)。

  6. 閱讀完以上步驟,弄懂它們的意義,然后在實(shí)踐中進(jìn)行練習(xí)。

                   第一講小結(jié)


  1. 光標(biāo)在屏幕文本中的移動(dòng)既可以用箭頭鍵,也可以使用 hjkl 字母鍵。
     h (左移) j (下行)       k (上行)     l (右移)

  2. 欲進(jìn)入 Vim 編輯器(從命令行提示符),請(qǐng)輸入:vim 文件名 <回車(chē)>

  3. 欲退出 Vim 編輯器,請(qǐng)輸入 <ESC>   :q!   <回車(chē)> 放棄所有改動(dòng)。
                      或者輸入 <ESC>   :wq   <回車(chē)> 保存改動(dòng)。

  4. 在正常模式下刪除光標(biāo)所在位置的字符,請(qǐng)按: x

  5. 欲插入或添加文本,請(qǐng)輸入:

     i   輸入欲插入文本   <ESC>        在光標(biāo)前插入文本
     A   輸入欲添加文本   <ESC>             在一行后添加文本

特別提示:按下 <ESC> 鍵會(huì)帶您回到正常模式或者撤消一個(gè)不想輸入或部分完整
的命令。

好了,第一講到此結(jié)束。下面接下來(lái)繼續(xù)第二講的內(nèi)容。



        第二講第一節(jié):刪除類(lèi)命令


    ** 輸入 dw 可以從光標(biāo)處刪除至一個(gè)單詞的末尾。**
  1. 請(qǐng)按下 <ESC> 鍵確保您處于正常模式。

  2. 請(qǐng)將光標(biāo)移動(dòng)到本節(jié)中下面標(biāo)記有 ---> 的那一行。

  3. 請(qǐng)將光標(biāo)移至準(zhǔn)備要?jiǎng)h除的單詞的起始處。

  4. 接著輸入 dw 刪除掉該單詞。

特別提示:當(dāng)您輸入時(shí),字母 d 會(huì)同時(shí)出現(xiàn)在屏幕的最后一行。Vim 在等待您輸入
字母 w。如果您看到的是除 d 外的其他字符,那表明您按錯(cuò)了;請(qǐng)按下 <ESC> 鍵,
然后重新再來(lái)。

---> There are a some words fun that don't belong paper in this sentence.

  1. 重復(fù)步驟3和步驟4,直至句子修正完畢。接著繼續(xù)第二講第二節(jié)內(nèi)容。
              第二講第二節(jié):更多刪除類(lèi)命令


           ** 輸入 d$ 從當(dāng)前光標(biāo)刪除到行末。**

  1. 請(qǐng)按下 <ESC> 鍵確保您處于正常模式。

  2. 請(qǐng)將光標(biāo)移動(dòng)到本節(jié)中下面標(biāo)記有 ---> 的那一行。

  3. 請(qǐng)將光標(biāo)移動(dòng)到該行的尾部(也就是在第一個(gè)點(diǎn)號(hào)‘.’后面)。

  4. 然后輸入 d$ 從光標(biāo)處刪至當(dāng)前行尾部。

---> Somebody typed the end of this line twice. end of this line twice.


  5. 請(qǐng)繼續(xù)學(xué)習(xí)第二講第三節(jié)就知道是怎么回事了。





         第二講第三節(jié):關(guān)于命令和對(duì)象

許多改變文本的命令都由一個(gè)操作符和一個(gè)動(dòng)作構(gòu)成。
使用刪除操作符 d 的刪除命令的格式如下:

d   motion

其中:
d - 刪除操作符。
motion - 操作符的操作對(duì)象(在下面列出)。

一個(gè)簡(jiǎn)短的動(dòng)作列表:
w - 從當(dāng)前光標(biāo)當(dāng)前位置直到下一個(gè)單詞起始處,不包括它的第一個(gè)字符。
e - 從當(dāng)前光標(biāo)當(dāng)前位置直到單詞末尾,包括最后一個(gè)字符。
$ - 從當(dāng)前光標(biāo)當(dāng)前位置直到當(dāng)前行末。

因此輸入 de 會(huì)從當(dāng)前光標(biāo)位置刪除到單詞末尾。

特別提示:
對(duì)于勇于探索者,請(qǐng)?jiān)谡DJ较旅鎯H按代表相應(yīng)動(dòng)作的鍵而不使用操作符,您
將看到光標(biāo)的移動(dòng)正如上面的對(duì)象列表所代表的一樣。

             第二講第四節(jié):使用計(jì)數(shù)指定動(dòng)作


             ** 在動(dòng)作前輸入數(shù)字會(huì)使它重復(fù)那么多次。 **

  1. 移動(dòng)光標(biāo)到下面標(biāo)記有 ---> 的一行的開(kāi)始。

  2. 輸入 2w 使光標(biāo)向前移動(dòng)兩個(gè)單詞。

  3. 輸入 3e 使光標(biāo)向前移動(dòng)到第三個(gè)單詞的末尾。

  4. 輸入 0 (數(shù)字零) 移動(dòng)光標(biāo)到行首。

  5. 重復(fù)步驟2和步驟3,嘗試不同的數(shù)字。

---> This is just a line with words you can move around in.

  6. 請(qǐng)繼續(xù)學(xué)習(xí)第二講第五節(jié)。



           第二講第五節(jié):使用計(jì)數(shù)以刪除更多


       ** 使用操作符時(shí)輸入數(shù)字可以使它重復(fù)那么多次。 **

上面已經(jīng)提到過(guò)刪除操作符和動(dòng)作的組合,您可以在組合中動(dòng)作之前插入一個(gè)數(shù)字以
刪除更多:
d number(數(shù)字) motion

  1. 移動(dòng)光標(biāo)到下面標(biāo)記有 ---> 的一行中第一個(gè)大寫(xiě)字母單詞上。

  2. 輸入 d2w 以刪除兩個(gè)大寫(xiě)字母單詞。

  3. 重復(fù)步驟1和步驟2,使用不同的數(shù)字使得用一個(gè)命令就能刪除全部相鄰的大寫(xiě)字母
    單詞

---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up.

                第二講第六節(jié):操作整行


             ** 輸入 dd 可以刪除整一個(gè)當(dāng)前行。 **

  鑒于整行刪除的高頻度,Vi 的設(shè)計(jì)者決定要簡(jiǎn)化整行刪除操作,您僅需要在同一行上
  擊打兩次 d 就可以刪除掉光標(biāo)所在的整行了。

  1. 請(qǐng)將光標(biāo)移動(dòng)到本節(jié)中下面的短句段落中的第二行。
  2. 輸入 dd 刪除該行。
  3. 然后移動(dòng)到第四行。
  4. 接著輸入 2dd 刪除兩行。

--->  1)  Roses are red,
--->  2)  Mud is fun,
--->  3)  Violets are blue,
--->  4)  I have a car,
--->  5)  Clocks tell time,
--->  6)  Sugar is sweet
--->  7)  And so are you.


           第二講第七節(jié):撤消類(lèi)命令


** 輸入 u 來(lái)撤消最后執(zhí)行的命令,輸入 U 來(lái)撤消對(duì)整行的修改。 **
  1. 請(qǐng)將光標(biāo)移動(dòng)到本節(jié)中下面標(biāo)記有 ---> 的那一行,并將其置于第一個(gè)錯(cuò)誤
    處。
  2. 輸入 x 刪除第一個(gè)不想保留的字母。
  3. 然后輸入 u 撤消最后執(zhí)行的(一次)命令。
  4. 這次要使用 x 修正本行的所有錯(cuò)誤。
  5. 現(xiàn)在輸入一個(gè)大寫(xiě)的 U ,恢復(fù)到該行的原始狀態(tài)。
  6. 接著多次輸入 u 以撤消 U 以及更前的命令。
  7. 然后多次輸入 CTRL-R (先按下 CTRL 鍵不放開(kāi),接著按 R 鍵),這樣就
    可以重做被撤消的命令,也就是撤消掉撤消命令。

---> Fiix the errors oon thhis line and reeplace them witth undo.

  1. 這些都是非常有用的命令。下面是第二講的小結(jié)了。
                   第二講小結(jié)


  1. 欲從當(dāng)前光標(biāo)刪除至下一個(gè)單詞,請(qǐng)輸入:dw
  2. 欲從當(dāng)前光標(biāo)刪除至當(dāng)前行末尾,請(qǐng)輸入:d$
  3. 欲刪除整行,請(qǐng)輸入:dd

  4. 欲重復(fù)一個(gè)動(dòng)作,請(qǐng)?jiān)谒懊婕由弦粋€(gè)數(shù)字:2w
  5. 在正常模式下修改命令的格式是:
               operator   [number]   motion
     其中:
       operator - 操作符,代表要做的事情,比如 d 代表刪除
       [number] - 可以附加的數(shù)字,代表動(dòng)作重復(fù)的次數(shù)
       motion   - 動(dòng)作,代表在所操作的文本上的移動(dòng),例如 w 代表單詞(word),
          $ 代表行末等等。

  6. 欲移動(dòng)光標(biāo)到行首,請(qǐng)按數(shù)字0鍵:0

  7. 欲撤消以前的操作,請(qǐng)輸入:u (小寫(xiě)的u)
     欲撤消在一行中所做的改動(dòng),請(qǐng)輸入:U (大寫(xiě)的U)
     欲撤消以前的撤消命令,恢復(fù)以前的操作結(jié)果,請(qǐng)輸入:CTRL-R

           第三講第一節(jié):置入類(lèi)命令


    ** 輸入 p 將最后一次刪除的內(nèi)容置入光標(biāo)之后。 **
  1. 請(qǐng)將光標(biāo)移動(dòng)到本節(jié)中下面第一個(gè)標(biāo)記有 ---> 的一行。

  2. 輸入 dd 將該行刪除,這樣會(huì)將該行保存到 Vim 的一個(gè)寄存器中。

  3. 接著將光標(biāo)移動(dòng)到 c) 一行,即準(zhǔn)備置入的位置的上方。記住:是上方哦。

  4. 然后在正常模式下(<ESC>鍵進(jìn)入)輸入 p 將該行粘貼置入。

  5. 重復(fù)步驟2至步驟4,將所有的行依序放置到正確的位置上。

---> d) Can you learn too?
---> b) Violets are blue,
---> c) Intelligence is learned,
---> a) Roses are red,

               第三講第二節(jié):替換類(lèi)命令


      ** 輸入 r 和一個(gè)字符替換光標(biāo)所在位置的字符。**

  1. 請(qǐng)將光標(biāo)移動(dòng)到本節(jié)中下面標(biāo)記有 ---> 的第一行。

  2. 請(qǐng)移動(dòng)光標(biāo)到第一個(gè)出錯(cuò)的位置。

  3. 接著輸入 r 和要替換成的字符,這樣就能將錯(cuò)誤替換掉了。

  4. 重復(fù)步驟2和步驟3,直到第一行已經(jīng)修改完畢。

--->  Whan this lime was tuoed in, someone presswd some wrojg keys!
--->  When this line was typed in, someone pressed some wrong keys!

  5. 然后我們繼續(xù)學(xué)習(xí)第三講第三節(jié)。

特別提示:切記您要在使用中學(xué)習(xí),而不是在記憶中學(xué)習(xí)。



        第三講第三節(jié):更改類(lèi)命令


     ** 要改變文本直到一個(gè)單詞的末尾,請(qǐng)輸入 ce **
  1. 請(qǐng)將光標(biāo)移動(dòng)到本節(jié)中下面標(biāo)記有 ---> 的第一行。

  2. 接著把光標(biāo)放在單詞 lubw 的字母 u 的位置那里。

  3. 然后輸入 cw 以及正確的單詞(在本例中是輸入 ine )。

  4. 最后按 <ESC> 鍵,然后光標(biāo)定位到下一個(gè)錯(cuò)誤第一個(gè)準(zhǔn)備更改的字母處。

  5. 重復(fù)步驟3和步驟4,直到第一個(gè)句子完全雷同第二個(gè)句子。

---> This lubw has a few wptfd that mrrf changing usf the change operator.
---> This line has a few words that need changing using the change operator.

提示:請(qǐng)注意 ce 命令不僅僅是刪除了一個(gè)單詞,它也讓您進(jìn)入插入模式了。

               第三講第四節(jié):使用c更改更多


       ** 更改類(lèi)操作符可以與刪除中使用的同樣的動(dòng)作配合使用。 **

  1. 更改類(lèi)操作符的工作方式跟刪除類(lèi)是一致的。操作格式是:

         c    [number]   motion

  2. 動(dòng)作參數(shù)(motion)也是一樣的,比如 w 代表單詞,$代表行末等等。

  3. 請(qǐng)將光標(biāo)移動(dòng)到本節(jié)中下面標(biāo)記有 ---> 的第一行。

  4. 接著將光標(biāo)移動(dòng)到第一個(gè)錯(cuò)誤處。

  5. 然后輸入 c$ 使得該行剩下的部分更正得同第二行一樣。最后按 <ESC> 鍵。

---> The end of this line needs some help to make it like the second.
---> The end of this line needs to be corrected using the  c$  command.



              第三講小結(jié)
  1. 要重新置入已經(jīng)刪除的文本內(nèi)容,請(qǐng)按小寫(xiě)字母 p 鍵。該操作可以將已刪除
    的文本內(nèi)容置于光標(biāo)之后。如果最后一次刪除的是一個(gè)整行,那么該行將置
    于當(dāng)前光標(biāo)所在行的下一行。

  2. 要替換光標(biāo)所在位置的字符,請(qǐng)輸入小寫(xiě)的 r 和要替換掉原位置字符的新字
    符即可。

  3. 更改類(lèi)命令允許您改變從當(dāng)前光標(biāo)所在位置直到動(dòng)作指示的位置中間的文本。
    比如輸入 ce 可以替換當(dāng)前光標(biāo)到單詞的末尾的內(nèi)容;輸入 c$ 可以替換當(dāng)
    前光標(biāo)到行末的內(nèi)容。

  4. 更改類(lèi)命令的格式是:

    c [number] motion

現(xiàn)在我們繼續(xù)學(xué)習(xí)下一講。

             第四講第一節(jié):定位及文件狀態(tài)

  ** 輸入 CTRL-G 顯示當(dāng)前編輯文件中當(dāng)前光標(biāo)所在行位置以及文件狀態(tài)信息。
     輸入大寫(xiě) G 則直接跳轉(zhuǎn)到文件中的某一指定行。**

  提示:切記要先通讀本節(jié)內(nèi)容,之后才可以執(zhí)行以下步驟!!!

  1. 按下 CTRL 鍵不放開(kāi)然后按 g 鍵。我們稱(chēng)這個(gè)鍵組合為 CTRL-G。
     您會(huì)看到頁(yè)面最底部出現(xiàn)一個(gè)狀態(tài)信息行,顯示的內(nèi)容是當(dāng)前編輯的文件名
     和文件中光標(biāo)位置。請(qǐng)記住行號(hào),它會(huì)在步驟3中用到。

提示:您也許會(huì)在屏幕的右下角看到光標(biāo)位置,這會(huì)在 'ruler' 選項(xiàng)設(shè)置時(shí)發(fā)生
      (參見(jiàn) :help 'ruler')

  2. 輸入大寫(xiě) G 可以使得當(dāng)前光標(biāo)直接跳轉(zhuǎn)到文件最后一行。
     輸入 gg 可以使得當(dāng)前光標(biāo)直接跳轉(zhuǎn)到文件第一行。

  3. 輸入您曾停留的行號(hào),然后輸入大寫(xiě) G。這樣就可以返回到您第一次按下
     CTRL-G 時(shí)所在的行了。

  4. 如果您覺(jué)得沒(méi)問(wèn)題的話(huà),請(qǐng)執(zhí)行步驟1至步驟3的操作進(jìn)行練習(xí)。

        第四講第二節(jié):搜索類(lèi)命令


 ** 輸入 / 加上一個(gè)字符串可以用以在當(dāng)前文件中查找該字符串。**
  1. 在正常模式下輸入 / 字符。您此時(shí)會(huì)注意到該字符和光標(biāo)都會(huì)出現(xiàn)在屏幕底
    部,這跟 : 命令是一樣的。

  2. 接著輸入 errroor <回車(chē)>。那個(gè)errroor就是您要查找的字符串。

  3. 要查找同上一次的字符串,只需要按 n 鍵。要向相反方向查找同上一次的字
    符串,請(qǐng)輸入大寫(xiě) N 即可。

  4. 如果您想逆向查找字符串,請(qǐng)使用 ? 代替 / 進(jìn)行。

  5. 要回到您之前的位置按 CTRL-O (按住 Ctrl 鍵不放同時(shí)按下字母 o)。重復(fù)按可以
    回退更多步。CTRL-I 會(huì)跳轉(zhuǎn)到較新的位置。

---> "errroor" is not the way to spell error; errroor is an error.
提示:如果查找已經(jīng)到達(dá)文件末尾,查找會(huì)自動(dòng)從文件頭部繼續(xù)查找,除非
'wrapscan' 選項(xiàng)被復(fù)位。

           第四講第三節(jié):配對(duì)括號(hào)的查找


          ** 輸入 % 可以查找配對(duì)的括號(hào) )、]、}。**

  1. 把光標(biāo)放在本節(jié)下面標(biāo)記有 --> 那一行中的任何一個(gè) (、[ 或 { 處。

  2. 接著按 % 字符。

  3. 此時(shí)光標(biāo)的位置應(yīng)當(dāng)是在配對(duì)的括號(hào)處。

  4. 再次按 % 就可以跳回配對(duì)的第一個(gè)括號(hào)處。

  5. 移動(dòng)光標(biāo)到另一個(gè) (、)、[、]、{ 或 } 處,按 % 查看其所作所為。

---> This ( is a test line with ('s, ['s ] and {'s } in it. ))


提示:在程序調(diào)試時(shí),這個(gè)功能用來(lái)查找不配對(duì)的括號(hào)是很有用的。



          第四講第四節(jié):替換命令


    ** 輸入 :s/old/new/g 可以替換 old 為 new。**
  1. 請(qǐng)將光標(biāo)移動(dòng)到本節(jié)中下面標(biāo)記有 ---> 的那一行。

  2. 輸入 :s/thee/the <回車(chē)> 。請(qǐng)注意該命令只改變光標(biāo)所在行的第一個(gè)匹配
    串。

  3. 輸入 :s/thee/the/g 則是替換全行的匹配串,該行中所有的 "thee" 都會(huì)被
    改變。

---> thee best time to see thee flowers is in thee spring.

  1. 要替換兩行之間出現(xiàn)的每個(gè)匹配串,請(qǐng)
    輸入 :#,#s/old/new/g 其中 #,# 代表的是替換操作的若干行中
    首尾兩行的行號(hào)。
    輸入 :%s/old/new/g 則是替換整個(gè)文件中的每個(gè)匹配串。
    輸入 :%s/old/new/gc 會(huì)找到整個(gè)文件中的每個(gè)匹配串,并且對(duì)每個(gè)匹配串
    提示是否進(jìn)行替換。
                   第四講小結(jié)


  1. CTRL-G 用于顯示當(dāng)前光標(biāo)所在位置和文件狀態(tài)信息。
     G 用于將光標(biāo)跳轉(zhuǎn)至文件最后一行。
     先敲入一個(gè)行號(hào)然后輸入大寫(xiě) G 則是將光標(biāo)移動(dòng)至該行號(hào)代表的行。
     gg 用于將光標(biāo)跳轉(zhuǎn)至文件第一行。

  2. 輸入 / 然后緊隨一個(gè)字符串是在當(dāng)前所編輯的文檔中正向查找該字符串。
     輸入 ? 然后緊隨一個(gè)字符串則是在當(dāng)前所編輯的文檔中反向查找該字符串。
     完成一次查找之后按 n 鍵是重復(fù)上一次的命令,可在同一方向上查
     找下一個(gè)匹配字符串所在;或者按大寫(xiě) N 向相反方向查找下一匹配字符串所在。
     CTRL-O 帶您跳轉(zhuǎn)回較舊的位置,CTRL-I 則帶您到較新的位置。

  3. 如果光標(biāo)當(dāng)前位置是括號(hào)(、)、[、]、{、},按 % 會(huì)將光標(biāo)移動(dòng)到配對(duì)的括號(hào)上。

  4. 在一行內(nèi)替換頭一個(gè)字符串 old 為新的字符串 new,請(qǐng)輸入  :s/old/new
     在一行內(nèi)替換所有的字符串 old 為新的字符串 new,請(qǐng)輸入  :s/old/new/g
     在兩行內(nèi)替換所有的字符串 old 為新的字符串 new,請(qǐng)輸入  :#,#s/old/new/g
     在文件內(nèi)替換所有的字符串 old 為新的字符串 new,請(qǐng)輸入  :%s/old/new/g
     進(jìn)行全文替換時(shí)詢(xún)問(wèn)用戶(hù)確認(rèn)每個(gè)替換需添加 c 標(biāo)志        :%s/old/new/gc

    第五講第一節(jié):在 VIM 內(nèi)執(zhí)行外部命令的方法


   ** 輸入 :! 然后緊接著輸入一個(gè)外部命令可以執(zhí)行該外部命令。**
  1. 按下我們所熟悉的 : 命令使光標(biāo)移動(dòng)到屏幕底部。這樣您就可以輸入一行命令了。

  2. 接著輸入感嘆號(hào) ! 這個(gè)字符,這樣就允許您執(zhí)行外部的 shell 命令了。

  3. 我們以 ls 命令為例。輸入 !ls <回車(chē)> 。該命令就會(huì)列舉出您當(dāng)前目錄的
    內(nèi)容,就如同您在命令行提示符下輸入 ls 命令的結(jié)果一樣。如果 !ls 沒(méi)起
    作用,您可以試試 :!dir 看看。

提示:所有的外部命令都可以以這種方式執(zhí)行,包括帶命令行參數(shù)的那些。

提示:所有的 : 命令都必須以敲 <回車(chē)> 鍵結(jié)束。從今以后我們就不會(huì)總是提到這一點(diǎn)
了。

              第五講第二節(jié):關(guān)于保存文件的更多信息


         ** 要將對(duì)文件的改動(dòng)保存到文件中,請(qǐng)輸入 :w FILENAME 。**

  1. 輸入 :!dir 或者 :!ls 獲知當(dāng)前目錄的內(nèi)容。您應(yīng)當(dāng)已知道最后還得敲
     <回車(chē)> 吧。

  2. 選擇一個(gè)未被用到的文件名,比如 TEST。

  3. 接著輸入 :w TEST  (此處 TEST 是您所選擇的文件名。)

  4. 該命令會(huì)以 TEST 為文件名保存整個(gè)文件 (Vim 教程)。為了驗(yàn)證這一點(diǎn),
     請(qǐng)?jiān)俅屋斎?:!dir 或 :!ls 查看您的目錄列表內(nèi)容。

請(qǐng)注意:如果您退出 Vim 然后在以命令 vim TEST 再次啟動(dòng) Vim,那么該文件內(nèi)
     容應(yīng)該同您保存時(shí)的文件內(nèi)容是完全一樣的。

  5. 現(xiàn)在您可以刪除 TEST 文件了。在 MS-DOS 下,請(qǐng)輸入:   :!del TEST
                                 在 Unix 下,請(qǐng)輸入:     :!rm TEST


        第五講第三節(jié):一個(gè)具有選擇性的保存命令


    ** 要保存文件的部分內(nèi)容,請(qǐng)輸入 v motion :w FILENAME **
  1. 移動(dòng)光標(biāo)到本行。

  2. 接著按 v 鍵,將光標(biāo)移動(dòng)至下面第五個(gè)條目上。您會(huì)注意到之間的文本被高亮了。

  3. 然后按 : 字符。您將看到屏幕底部會(huì)出現(xiàn) :'<,'> 。

  4. 現(xiàn)在請(qǐng)輸入 w TEST,其中 TEST 是一個(gè)未被使用的文件名。確認(rèn)您看到了
    :'<,'>w TEST 之后按 <回車(chē)> 鍵。

  5. 這時(shí) Vim 會(huì)把選中的行寫(xiě)入到以 TEST 命名的文件中去。使用 :!dir 或 :!ls
    確認(rèn)文件被正確保存。這次先別刪除它!我們?cè)谙乱恢v中會(huì)用到它。

提示:按 v 鍵使 Vim 進(jìn)入可視模式進(jìn)行選取。您可以四處移動(dòng)光標(biāo)使選取區(qū)域變大或
變小。接著您可以使用一個(gè)操作符對(duì)選中文本進(jìn)行操作。例如,按 d 鍵會(huì)刪除
選中的文本內(nèi)容。

           第五講第四節(jié):提取和合并文件


       ** 要向當(dāng)前文件中插入另外的文件的內(nèi)容,請(qǐng)輸入 :r FILENAME **

  1. 請(qǐng)把光標(biāo)移動(dòng)到本行上面一行。

特別提示:執(zhí)行步驟2之后您將看到第五講第三節(jié)的文字,請(qǐng)屆時(shí)往下移動(dòng)
          以再次看到本講內(nèi)容。

  2. 接著通過(guò)命令 :r TEST 將前面創(chuàng)建的名為 TEST 的文件提取進(jìn)來(lái)。
     您所提取進(jìn)來(lái)的文件將從光標(biāo)所在位置處開(kāi)始置入。

  3. 為了確認(rèn)文件已經(jīng)提取成功,移動(dòng)光標(biāo)回到原來(lái)的位置就可以注意有兩份第
     五講第三節(jié)的內(nèi)容,一份是原始內(nèi)容,另外一份是來(lái)自文件的副本。

提示:您還可以讀取外部命令的輸出。例如, :r !ls 可以讀取 ls 命令的輸出,并
      把它放置在光標(biāo)下面。




               第五講小結(jié)
  1. :!command 用于執(zhí)行一個(gè)外部命令 command。

    請(qǐng)看一些實(shí)際例子:
    (MS-DOS) (Unix)
    :!dir :!ls - 用于顯示當(dāng)前目錄的內(nèi)容。
    :!del FILENAME :!rm FILENAME - 用于刪除名為 FILENAME 的文件。

  2. :w FILENAME 可將當(dāng)前 VIM 中正在編輯的文件保存到名為 FILENAME 的文
    件中。

  3. v motion :w FILENAME 可將當(dāng)前編輯文件中可視模式下選中的內(nèi)容保存到文件
    FILENAME 中。

  4. :r FILENAME 可提取磁盤(pán)文件 FILENAME 并將其插入到當(dāng)前文件的光標(biāo)位置
    后面。

  5. :r !dir 可以讀取 dir 命令的輸出并將其放置到當(dāng)前文件的光標(biāo)位置后面。

             第六講第一節(jié):打開(kāi)類(lèi)命令


     ** 輸入 o 將在光標(biāo)的下方打開(kāi)新的一行并進(jìn)入插入模式。**

  1. 請(qǐng)將光標(biāo)移動(dòng)到本節(jié)中下面標(biāo)記有 ---> 的那一行。

  2. 接著輸入小寫(xiě)的 o 在光標(biāo) *下方* 打開(kāi)新的一行,這個(gè)命令會(huì)使您
     進(jìn)入插入模式。

  3. 然后輸入一些文字,之后按 <ESC> 鍵退出插入模式而進(jìn)入正常模式。

---> After typing  o  the cursor is placed on the open line in Insert mode.

  4. 為了在光標(biāo) *上方* 打開(kāi)新的一行,只需要輸入大寫(xiě)的 O 而不是小寫(xiě)的 o
     就可以了。請(qǐng)?jiān)谙滦袦y(cè)試一下吧。

---> Open up a line above this by typing O while the cursor is on this line.




        第六講第二節(jié):附加類(lèi)命令


         ** 輸入 a 將可在光標(biāo)之后插入文本。 **
  1. 請(qǐng)?jiān)谡DJ较聦⒐鈽?biāo)移動(dòng)到本節(jié)中下面標(biāo)記有 ---> 的第一行的行首。

  2. 接著輸入 e 直到光標(biāo)位于 li 的末尾。

  3. 輸入小寫(xiě)的 a 則可在光標(biāo)之后插入文本了。

  4. 將單詞補(bǔ)充完整,就像下一行中的那樣。之后按 <ESC> 鍵退出插入模式回到
    正常模式。

  5. 使用 e 移動(dòng)光標(biāo)到下一步不完整的單詞,重復(fù)步驟3和步驟4。

---> This li will allow you to pract appendi text to a line.
---> This line will allow you to practice appending text to a line.

提示:a、i 和 A 都會(huì)帶您進(jìn)入插入模式,惟一的區(qū)別在于字符插入的位置。

            第六講第三節(jié):另外一個(gè)置換類(lèi)命令的版本


              ** 輸入大寫(xiě)的 R 可連續(xù)替換多個(gè)字符。**

  1. 請(qǐng)將光標(biāo)移動(dòng)到本節(jié)中下面標(biāo)記有 ---> 的第一行。移動(dòng)光標(biāo)到第一個(gè) xxx 的
     起始位置。

  2. 然后輸入大寫(xiě)的 R 開(kāi)始把第一行中的不同于第二行的剩余字符逐一輸入,就
     可以全部替換掉原有的字符而使得第一行完全雷同第二行了。

  3. 接著按 <ESC> 鍵退出替換模式回到正常模式。您可以注意到尚未替換的文本
     仍然保持原狀。

  4. 重復(fù)以上步驟,將剩余的 xxx 也替換掉。

---> Adding 123 to xxx gives you xxx.
---> Adding 123 to 456 gives you 579.

提示:替換模式與插入模式相似,不過(guò)每個(gè)輸入的字符都會(huì)刪除一個(gè)已有的字符。

          第六講第四節(jié):復(fù)制粘貼文本


     ** 使用操作符 y 復(fù)制文本,使用 p 粘貼文本 **
  1. 定位到下面標(biāo)記有 ---> 的一行,將光標(biāo)移動(dòng)到 "a)" 之后。

  2. 接著使用 v 進(jìn)入可視模式,移動(dòng)光標(biāo)到 "first" 的前面。

  3. 現(xiàn)在輸入 y 以抽出(復(fù)制)高亮的文本。

  4. 然后移動(dòng)光標(biāo)到下一行的末尾:j$

  5. 接著輸入 p 以放置(粘貼)復(fù)制了的文本。然后輸入:a second <ESC>。

  6. 使用可視模式選中 " item.",用 y 復(fù)制,再用 j$ 將光標(biāo)移動(dòng)到下一行末尾,
    用 p 將文本粘貼到那里。

---> a) this is the first item.
b)

提示:您還可以把 y 當(dāng)作操作符來(lái)使用;例如 yw 可以用來(lái)復(fù)制一個(gè)單詞。

                第六講第五節(jié):設(shè)置類(lèi)命令的選項(xiàng)


          ** 設(shè)置可使查找或者替換可忽略大小寫(xiě)的選項(xiàng) **

  1. 要查找單詞 ignore 可在正常模式下輸入 /ignore <回車(chē)>。
     要重復(fù)查找該詞,可以重復(fù)按 n 鍵。

  2. 然后設(shè)置 ic 選項(xiàng)(Ignore Case,忽略大小寫(xiě)),請(qǐng)輸入: :set ic

  3. 現(xiàn)在可以通過(guò)鍵入 n 鍵再次查找單詞 ignore。注意到 Ignore 和 IGNORE 現(xiàn)在
     也被找到了。

  4. 然后設(shè)置 hlsearch 和 incsearch 這兩個(gè)選項(xiàng),請(qǐng)輸入: :set hls is

  5. 現(xiàn)在可以再次輸入查找命令,看看會(huì)有什么效果: /ignore <回車(chē)>

  6. 要禁用忽略大小寫(xiě),請(qǐng)輸入: :set noic

提示:要移除匹配項(xiàng)的高亮顯示,請(qǐng)輸入:  :nohlsearch
提示:如果您想要僅在一次查找時(shí)忽略字母大小寫(xiě),您可以使用 \c:
      /ignore\c <回車(chē)>
               第六講小結(jié)
  1. 輸入小寫(xiě)的 o 可以在光標(biāo)下方打開(kāi)新的一行并進(jìn)入插入模式。
    輸入大寫(xiě)的 O 可以在光標(biāo)上方打開(kāi)新的一行。

  2. 輸入小寫(xiě)的 a 可以在光標(biāo)所在位置之后插入文本。
    輸入大寫(xiě)的 A 可以在光標(biāo)所在行的行末之后插入文本。

  3. e 命令可以使光標(biāo)移動(dòng)到單詞末尾。

  4. 操作符 y 復(fù)制文本,p 粘貼先前復(fù)制的文本。

  5. 輸入大寫(xiě)的 R 將進(jìn)入替換模式,直至按 <ESC> 鍵回到正常模式。

  6. 輸入 :set xxx 可以設(shè)置 xxx 選項(xiàng)。一些有用的選項(xiàng)如下:
    'ic' 'ignorecase' 查找時(shí)忽略字母大小寫(xiě)
    'is' 'incsearch' 查找短語(yǔ)時(shí)顯示部分匹配
    'hls' 'hlsearch' 高亮顯示所有的匹配短語(yǔ)
    選項(xiàng)名可以用完整版本,也可以用縮略版本。

  7. 在選項(xiàng)前加上 no 可以關(guān)閉選項(xiàng): :set noic

              第七講第一節(jié):獲取幫助信息


              ** 使用在線(xiàn)幫助系統(tǒng) **

  Vim 擁有一個(gè)細(xì)致全面的在線(xiàn)幫助系統(tǒng)。要啟動(dòng)該幫助系統(tǒng),請(qǐng)選擇如下三種方
  法之一:
    - 按下 <HELP> 鍵 (如果鍵盤(pán)上有的話(huà))
    - 按下 <F1> 鍵 (如果鍵盤(pán)上有的話(huà))
    - 輸入    :help <回車(chē)>

  請(qǐng)閱讀幫助窗口中的文字以了解幫助是如何工作的。
  輸入 CTRL-W CTRL-W   可以使您在窗口之間跳轉(zhuǎn)。
  輸入 :q <回車(chē)> 可以關(guān)閉幫助窗口。

  提供一個(gè)正確的參數(shù)給":help"命令,您可以找到關(guān)于該主題的幫助。請(qǐng)?jiān)囼?yàn)以
  下參數(shù)(可別忘了按回車(chē)鍵哦):

    :help w
    :help c_CTRL-D
    :help insert-index
    :help user-manual
          第七講第二節(jié):創(chuàng)建啟動(dòng)腳本


          ** 啟用 Vim 的特性 **

Vim 的功能特性要比 Vi 多得多,但其中大部分都沒(méi)有缺省啟用。為了使用更多的
特性,您得創(chuàng)建一個(gè) vimrc 文件。

  1. 開(kāi)始編輯 vimrc 文件,具體命令取決于您所使用的操作系統(tǒng):
    :edit ~/.vimrc 這是 Unix 系統(tǒng)所使用的命令
    :edit $VIM/_vimrc 這是 MS-Windows 系統(tǒng)所使用的命令

  2. 接著讀取 vimrc 示例文件的內(nèi)容:
    :r $VIMRUNTIME/vimrc_example.vim

  3. 保存文件,命令為:
    :write

下次您啟動(dòng) Vim 時(shí),編輯器就會(huì)有了語(yǔ)法高亮的功能。
您可以把您喜歡的各種設(shè)置添加到這個(gè) vimrc 文件中。
要了解更多信息請(qǐng)輸入 :help vimrc-intro

                第七講第三節(jié):補(bǔ)全功能


          ** 使用 CTRL-D 和 <TAB> 可以進(jìn)行命令行補(bǔ)全 **

  1. 請(qǐng)確保 Vim 不是在以兼容模式運(yùn)行: :set nocp

  2. 查看一下當(dāng)前目錄下已經(jīng)存在哪些文件,輸入: :!ls   或者  :!dir

  3. 現(xiàn)在輸入一個(gè)目錄的起始部分,例如輸入: :e

  4. 接著按 CTRL-D 鍵,Vim 會(huì)顯示以 e 開(kāi)始的命令的列表。

  5. 然后按 <TAB> 鍵,Vim 會(huì)補(bǔ)全命令為 :edit 。

  6. 現(xiàn)在添加一個(gè)空格,以及一個(gè)已有文件的文件名的起始部分,例如: :edit FIL

  7. 接著按 <TAB> 鍵,Vim 會(huì)補(bǔ)全文件名(如果它是惟一匹配的)。

提示:補(bǔ)全對(duì)于許多命令都有效。您只需嘗試按 CTRL-D 和 <TAB>。
      它對(duì)于 :help 命令非常有用。

              第七講小結(jié)
  1. 輸入 :help 或者按 <F1> 鍵或 <Help> 鍵可以打開(kāi)幫助窗口。

  2. 輸入 :help cmd 可以找到關(guān)于 cmd 命令的幫助。

  3. 輸入 CTRL-W CTRL-W 可以使您在窗口之間跳轉(zhuǎn)。

  4. 輸入 :q 以關(guān)閉幫助窗口

  5. 您可以創(chuàng)建一個(gè) vimrc 啟動(dòng)腳本文件用來(lái)保存您偏好的設(shè)置。

  6. 當(dāng)輸入 : 命令時(shí),按 CTRL-D 可以查看可能的補(bǔ)全結(jié)果。
    按 <TAB> 可以使用一個(gè)補(bǔ)全。


  vim 教程到此就結(jié)束了。本教程只是為了簡(jiǎn)明地介紹一下 Vim 編輯器,但已足以讓您
  很容易使用這個(gè)編輯器了。毋庸質(zhì)疑,vim還有很多很多的命令,本教程所介
  紹的距離完整的差得很遠(yuǎn)。所以您要精通的話(huà),還望繼續(xù)努力哦。下一步您可以閱讀
  Vim 的用戶(hù)手冊(cè),使用的命令是: :help user-manual

  下面這本書(shū)值得推薦用于更進(jìn)一步的閱讀和學(xué)習(xí):
    Vim - Vi Improved - 作者:Steve Oualline
    出版社:New Riders
  這是第一本完全講解 Vim 的書(shū)籍。它對(duì)于初學(xué)者特別有用。其中包含有大量實(shí)例
  和圖示。
  欲知詳情,請(qǐng)?jiān)L問(wèn) http://iccf-holland.org/click5.html

  以下這本書(shū)比較老了而且內(nèi)容更多是關(guān)于 Vi 而非 Vim,但是也值得推薦:
    Learning the Vi Editor - 作者:Linda Lamb
    出版社:O'Reilly & Associates Inc.
  這是一本不錯(cuò)的書(shū),通過(guò)它您幾乎能夠了解到任何您想要使用 Vi 做的事情。
  此書(shū)的第六個(gè)版本也包含了一些關(guān)于 Vim 的信息。

  本教程是由來(lái)自 Calorado School of Mines 的 Michael C. Pierce 和
  Robert K. Ware 所編寫(xiě)的,其中很多創(chuàng)意由來(lái)自 Colorado State University 的
  Charles Smith 提供。編者的電子郵箱是:bware@mines.colorado.edu


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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