聲明:本文源于Centos 7.2系統vim自帶的練習教程--vimtutor
歡迎閱?讀《 V I M? 教? 程 》?-?版本 1.7?
?
????Vim 是一個具有很多命令的功能非常強大的編輯器。限于篇幅,在本教程當中
???? 就不詳細介紹了。本教程的設計目標是講述一些必要的基本命令,而掌握好這
???? 些命令,您就能夠很容易地將Vim 當作一個通用編輯器來使用了。
?
???? 完成本教程的內容大約需要25-30分鐘,取決于您訓練的時間。
?
???? 注意:
???? 每一節的命令操作將會更改本文。推薦您復制本文的一個副本,然后在副本上
???? 進行訓練(如果您是通過"vimtutor"來啟動教程的,那么本文就已經是副本了)。
?
???? 切記一點:本教程的設計思路是在使用中進行學習的。也就是說,您需要通過
???? 執行命令來學習它們本身的正確用法。如果您只是閱讀而不操作,那么您可能
???? 會很快遺忘這些命令的!
?
???? 好了,現在請確定您的Shift-Lock(大小寫鎖定鍵)還沒有按下,然后按鍵盤上
???? 的字母鍵 j 足夠多次來移動光標,直到第一節的內容能夠完全充滿屏幕。
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
? ??????????????????????第一講第一節:移動光標
?
?
????????????** 要移動光標,請依照說明分別按下 h、j、k、l 鍵。 **
?
????????????^
????????????k????????????? 提示: h 的鍵位于左邊,每次按下就會向左移動。
??????< h?????? l >?????????????? l 的鍵位于右邊,每次按下就會向右移動。
????????????j???????????????????? j 鍵看起來很象一支尖端方向朝下的箭頭。
????????????v
?
? 1. 請隨意在屏幕內移動光標,直至您覺得舒服為止。
?
? 2. 按下下行鍵(j),直到出現光標重復下行。
?
---> 現在您應該已經學會如何移動到下一講吧。
?
? 3. 現在請使用下行鍵,將光標移動到第一講第二節。
?
提示:如果您不敢確定您所按下的字母,請按下<ESC>鍵回到正常(Normal)模式。
?????然后再次從鍵盤輸入您想要的命令。
?
提示:光標鍵應當也能正常工作的。但是使用hjkl鍵,在習慣之后您就能夠更快
?????地在屏幕內四處移動光標。真的是這樣!
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
??????????????????????? 第一講第二節:VIM的進入和退出
?
?
? !! 特別提示:敬請閱讀本一節的完整內容,然后再執行以下所講解的命令。
?
? 1. 按<ESC>鍵(這是為了確保您處在正常模式)。
? 2. 然后輸入:???????????????? :q! <回車>
???? 這種方式的退出編輯器會丟棄您進入編輯器以來所做的改動。
?
? 3. 如果您看到了命令行提示符,請輸入能夠帶您回到本教程的命令,那就是:
????vimtutor <回車>
?
? 4. 如果您自信已經牢牢記住了這些步驟的話,請從步驟1執行到步驟3退出,然
???? 后再次進入編輯器。
?
提示: :q! <回車> 會丟棄您所做的任何改動。幾講之后您將學會如何保存改動到文件。
?
? 5. 將光標下移到第一講第三節。
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
??????????????????????? 第一講第三節:文本編輯之刪除
?
?
?? **在正常(Normal)模式下,可以按下 x 鍵來刪除光標所在位置的字符。**
?
? 1. 請將光標移動到本節中下面標記有 ---> 的那一行。
?
? 2. 為了修正輸入錯誤,請將光標移至準備刪除的字符的位置處。
?
? 3. 然后按下 x 鍵將錯誤字符刪除掉。
?
? 4. 重復步驟2到步驟4,直到句子修正為止。
---> The ccow jumpedd ovverr thhe mooon.
?
? 5. 好了,該行已經修正了,下面是第一講第四節。
?
特別提示:在瀏覽本教程時,不要強行記憶。記住一點:在使用中學習。
?
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
???????????????????? 第一講第四節:文本編輯之插入
?
?
????????** 在正常模式下,可以按下 i 鍵來插入文本。**
?
? 1. 請將光標移動到本節中下面標記有 ---> 的第一行。
?
? 2. 為了使得第一行內容雷同于第二行,請將光標移至文本第一個準備插入字符
???? 的位置。
?
? 3. 然后按下 i 鍵,接著輸入必要的文本字符。
?
? 4. 每個錯誤修正完畢后,請按下<ESC> 鍵返回正常模式。
???? 重復步驟2至步驟4以便修正句子。
?
---> There is text misng this .
---> There is some text missing fromthis line.
?
? 5. 如果您對文本插入操作已經很滿意,請接著閱讀下面的第一講第五節。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
???????????????????? 第一講第五節:文本編輯之添加
?
?
??????????????????????? ** 按 A 鍵以添加文本。 **
?
? 1. 移動光標到下面第一個標記有---> 的一行。
???? 光標放在那一行的哪個字符上并不重要。
?
? 2. 按 A 鍵輸入必要的添加內容。
?
? 3. 文本添加完畢后,按<ESC> 鍵回到正常模式。
?
? 4. 移動光標到下面第二個標記有---> 的一行。重復步驟2和步驟3以改正這個句子。
?
---> 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. 當您對添加文本操作感到滿意時,請繼續學習第一講第六節。
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
???????????????????? 第一講第六節:編輯文件
?
??????????????????? ** 使用 :wq 以保存文件并退出。 **
?
? 特別提示:在執行以下步驟之前,請先讀完整個小節!
1. 如您在第一講第二節中所做的那樣退出本教程::q!
???? 或者,如果您可以訪問另一個終端,請在那里執行以下操作。
?
? 2. 在 shell 的提示符下輸入命令:vim tutor <回車>
????'vim'是啟動 Vim 編輯器的命令,'tutor'是您希望編輯的文件的名字。
???? 請使用一個可以改動的文件。
?
? 3. 使用您在前面的教程中學到的命令插入刪除文本。
?
? 4. 保存改動過的文件并退出Vim,按這些鍵: :wq? <回車>
?
? 5. 如果您在步驟1中已經退出 vimtutor,請重啟 vimtutor移動到下面的小結一節。
?
? 6. 閱讀完以上步驟,弄懂它們的意義,然后在實踐中進行練習。
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????????????????????????????? 第一講小結
?
?
? 1. 光標在屏幕文本中的移動既可以用箭頭鍵,也可以使用 hjkl 字母鍵。
????????h (左移)?????? j (下行) ??????k (上行)???? l (右移)
?
? 2. 欲進入 Vim 編輯器(從命令行提示符),請輸入:vim 文件名 <回車>
?
? 3. 欲退出 Vim 編輯器,請輸入<ESC>?? :q!?? <回車> 放棄所有改動。
????????????????????? 或者輸入<ESC>?? :wq?? <回車> 保存改動。
?
? 4. 在正常模式下刪除光標所在位置的字符,請按: x
? 5. 欲插入或添加文本,請輸入:
?
????????i?? 輸入欲插入文本?? <ESC>???????? ????在光標前插入文本
????????A?? 輸入欲添加文本?? <ESC>???????????? 在一行后添加文本
?
特別提示:按下 <ESC> 鍵會帶您回到正常模式或者撤消一個不想輸入或部分完整
的命令。
?
好了,第一講到此結束。下面接下來繼續第二講的內容。
?
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
??????????????????????? 第二講第一節:刪除類命令
?
?
???????????** 輸入 dw 可以從光標處刪除至一個單詞的末尾。**
?
? 1. 請按下<ESC> 鍵確保您處于正常模式。
?
? 2. 請將光標移動到本節中下面標記有 ---> 的那一行。
?
? 3. 請將光標移至準備要刪除的單詞的起始處。
?
? 4. 接著輸入 dw 刪除掉該單詞。
?
? 特別提示:當您輸入時,字母d 會同時出現在屏幕的最后一行。Vim 在等待您輸入
? 字母 w。如果您看到的是除 d 外的其他字符,那表明您按錯了;請按下 <ESC> 鍵,
? 然后重新再來。
---> There are a some words fun thatdon't belong paper in this sentence.
?
? 5. 重復步驟3和步驟4,直至句子修正完畢。接著繼續第二講第二節內容。
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
????????????????????? 第二講第二節:更多刪除類命令
?
?
?????????????????? ** 輸入 d$ 從當前光標刪除到行末。**
?
? 1. 請按下<ESC> 鍵確保您處于正常模式。
?
? 2. 請將光標移動到本節中下面標記有 ---> 的那一行。
?
? 3. 請將光標移動到該行的尾部(也就是在第一個點號‘.’后面)。
?
? 4. 然后輸入 d$ 從光標處刪至當前行尾部。
?
---> Somebody typed the end of this linetwice. end of this line twice.
?
?
? 5. 請繼續學習第二講第三節就知道是怎么回事了。
?
?
?
?
?
????????????????????第二講第三節:關于命令和對象
?
?
? 許多改變文本的命令都由一個操作符和一個動作構成。
? 使用刪除操作符 d 的刪除命令的格式如下:
?
???????d?? motion
?
? 其中:
???d????? - 刪除操作符。
???motion - 操作符的操作對象(在下面列出)。
?
? 一個簡短的動作列表:
??? w- 從當前光標當前位置直到下一個單詞起始處,不包括它的第一個字符。
??? e- 從當前光標當前位置直到單詞末尾,包括最后一個字符。
??? $- 從當前光標當前位置直到當前行末。
?
? 因此輸入 de 會從當前光標位置刪除到單詞末尾。
?
特別提示:
??? 對于勇于探索者,請在正常模式下面僅按代表相應動作的鍵而不使用操作符,您
??? 將看到光標的移動正如上面的對象列表所代表的一樣。
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
???????????????????? 第二講第四節:使用計數指定動作
?
?
????????????** 在動作前輸入數字會使它重復那么多次。 **
?
? 1. 移動光標到下面標記有---> 的一行的開始。
? 2. 輸入 2w 使光標向前移動兩個單詞。
?
? 3. 輸入 3e 使光標向前移動到第三個單詞的末尾。
?
? 4. 輸入 0 (數字零) 移動光標到行首。
?
? 5. 重復步驟2和步驟3,嘗試不同的數字。
?
---> This is just a line with words youcan move around in.
?
? 6. 請繼續學習第二講第五節。
?
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????????????????????? 第二講第五節:使用計數以刪除更多
?
?
?????????????? ** 使用操作符時輸入數字可以使它重復那么多次。 **
?
? 上面已經提到過刪除操作符和動作的組合,您可以在組合中動作之前插入一個數字以
? 刪除更多:
????????d?? number(數字)?? motion
?
? 1. 移動光標到下面標記有---> 的一行中第一個大寫字母單詞上。
?
? 2. 輸入 d2w 以刪除兩個大寫字母單詞。
?
? 3. 重復步驟1和步驟2,使用不同的數字使得用一個命令就能刪除全部相鄰的大寫字母
???? 單詞
?
--->?this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up.
?
?
?
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
??????????????????????????? 第二講第六節:操作整行
?
?
???????????????????? ** 輸入 dd 可以刪除整一個當前行。**
?
? 鑒于整行刪除的高頻度,Vi的設計者決定要簡化整行刪除操作,您僅需要在同一行上
? 擊打兩次 d 就可以刪除掉光標所在的整行了。
?
? 1. 請將光標移動到本節中下面的短句段落中的第二行。
? 2. 輸入 dd 刪除該行。
? 3. 然后移動到第四行。
? 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.
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????????????????????????? 第二講第七節:撤消類命令
?
?
???????** 輸入 u 來撤消最后執行的命令,輸入 U 來撤消對整行的修改。 **
?
? 1. 請將光標移動到本節中下面標記有 ---> 的那一行,并將其置于第一個錯誤
???? 處。
? 2. 輸入 x 刪除第一個不想保留的字母。
? 3. 然后輸入 u 撤消最后執行的(一次)命令。
? 4. 這次要使用 x 修正本行的所有錯誤。
? 5. 現在輸入一個大寫的 U ,恢復到該行的原始狀態。
? 6. 接著多次輸入 u 以撤消 U 以及更前的命令。
? 7. 然后多次輸入 CTRL-R(先按下 CTRL 鍵不放開,接著按 R 鍵),這樣就
???? 可以重做被撤消的命令,也就是撤消掉撤消命令。
?
---> Fiix the errors oon thhis line andreeplace them witth undo.
?
? 8. 這些都是非常有用的命令。下面是第二講的小結了。
?
?
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????????????????????????????? 第二講小結
?
?
? 1. 欲從當前光標刪除至下一個單詞,請輸入:dw
2. 欲從當前光標刪除至當前行末尾,請輸入:d$
? 3. 欲刪除整行,請輸入:dd
?
? 4. 欲重復一個動作,請在它前面加上一個數字:2w
? 5. 在正常模式下修改命令的格式是:
?????????????? operator?? [number]??motion
???? 其中:
??????operator - 操作符,代表要做的事情,比如 d 代表刪除
??????[number] - 可以附加的數字,代表動作重復的次數
??????motion?? - 動作,代表在所操作的文本上的移動,例如 w 代表單詞(word),
????????????????? $ 代表行末等等。
?
? 6. 欲移動光標到行首,請按數字0鍵:0
?
? 7. 欲撤消以前的操作,請輸入:u(小寫的u)
???? 欲撤消在一行中所做的改動,請輸入:U (大寫的U)
???? 欲撤消以前的撤消命令,恢復以前的操作結果,請輸入:CTRL-R
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????????????????????????? 第三講第一節:置入類命令
?
?
??????????????? ** 輸入 p 將最后一次刪除的內容置入光標之后。 **
?
? 1. 請將光標移動到本節中下面第一個標記有 ---> 的一行。
?
? 2. 輸入 dd 將該行刪除,這樣會將該行保存到 Vim 的一個寄存器中。
?
? 3. 接著將光標移動到 c) 一行,即準備置入的位置的上方。記住:是上方哦。
4. 然后在正常模式下(<ESC>鍵進入)輸入 p 將該行粘貼置入。
?
? 5. 重復步驟2至步驟4,將所有的行依序放置到正確的位置上。
?
---> d) Can you learn too?
---> b) Violets are blue,
---> c) Intelligence is learned,
---> a) Roses are red,
?
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????????????????????????? 第三講第二節:替換類命令
?
?
?????????** 輸入 r 和一個字符替換光標所在位置的字符。**
?
? 1. 請將光標移動到本節中下面標記有 ---> 的第一行。
?
? 2. 請移動光標到第一個出錯的位置。
?
? 3. 接著輸入 r 和要替換成的字符,這樣就能將錯誤替換掉了。
?
? 4. 重復步驟2和步驟3,直到第一行已經修改完畢。
?
--->?Whan this lime was tuoed in, someone presswd some wrojg keys!
--->?When this line was typed in, someone pressed some wrong keys!
?
? 5. 然后我們繼續學習第三講第三節。
特別提示:切記您要在使用中學習,而不是在記憶中學習。
?
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
??????????????????????? 第三講第三節:更改類命令
?
?
???????????????? ** 要改變文本直到一個單詞的末尾,請輸入 ce **
?
? 1. 請將光標移動到本節中下面標記有 ---> 的第一行。
?
? 2. 接著把光標放在單詞lubw 的字母 u 的位置那里。
?
? 3. 然后輸入 cw 以及正確的單詞(在本例中是輸入 ine )。
?
? 4. 最后按<ESC> 鍵,然后光標定位到下一個錯誤第一個準備更改的字母處。
?
? 5. 重復步驟3和步驟4,直到第一個句子完全雷同第二個句子。
?
---> This lubw has a few wptfd that mrrfchanging usf the change operator.
---> This line has a few words that needchanging using the change operator.
?
提示:請注意 ce 命令不僅僅是刪除了一個單詞,它也讓您進入插入模式了。
?
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????????????????????? 第三講第四節:使用c更改更多
?
?
??????????** 更改類操作符可以與刪除中使用的同樣的動作配合使用。 **
?
? 1. 更改類操作符的工作方式跟刪除類是一致的。操作格式是:
?
????????c??? [number]?? motion
?
? 2. 動作參數(motion)也是一樣的,比如 w 代表單詞,$代表行末等等。
?
? 3. 請將光標移動到本節中下面標記有 ---> 的第一行。
?
? 4. 接著將光標移動到第一個錯誤處。
?
? 5. 然后輸入 c$ 使得該行剩下的部分更正得同第二行一樣。最后按 <ESC> 鍵。
?
---> The end of this line needs somehelp to make it like the second.
---> The end of this line needs to becorrected using the? c$? command.
?
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
????????????????????????????????? 第三講小結
?
?
? 1. 要重新置入已經刪除的文本內容,請按小寫字母 p 鍵。該操作可以將已刪除
???? 的文本內容置于光標之后。如果最后一次刪除的是一個整行,那么該行將置
???? 于當前光標所在行的下一行。
?
? 2. 要替換光標所在位置的字符,請輸入小寫的 r 和要替換掉原位置字符的新字
??? 符即可。
?
? 3. 更改類命令允許您改變從當前光標所在位置直到動作指示的位置中間的文本。
???? 比如輸入 ce 可以替換當前光標到單詞的末尾的內容;輸入 c$ 可以替換當
???? 前光標到行末的內容。
?
? 4. 更改類命令的格式是:
?
????????c?? [number]?? motion
?
現在我們繼續學習下一講。
?
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
???????????????????? 第四講第一節:定位及文件狀態
?
? ** 輸入 CTRL-G 顯示當前編輯文件中當前光標所在行位置以及文件狀態信息。
???? 輸入大寫 G 則直接跳轉到文件中的某一指定行。**
?
? 提示:切記要先通讀本節內容,之后才可以執行以下步驟!!!
?
? 1. 按下 CTRL 鍵不放開然后按 g 鍵。我們稱這個鍵組合為CTRL-G。
???? 您會看到頁面最底部出現一個狀態信息行,顯示的內容是當前編輯的文件名
???? 和文件中光標位置。請記住行號,它會在步驟3中用到。
?
提示:您也許會在屏幕的右下角看到光標位置,這會在 'ruler' 選項設置時發生
?????(參見 :help 'ruler')
?
? 2. 輸入大寫 G 可以使得當前光標直接跳轉到文件最后一行。
輸入 gg 可以使得當前光標直接跳轉到文件第一行。
?
? 3. 輸入您曾停留的行號,然后輸入大寫 G。這樣就可以返回到您第一次按下
????CTRL-G 時所在的行了。
?
? 4. 如果您覺得沒問題的話,請執行步驟1至步驟3的操作進行練習。
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
??????????????????????? 第四講第二節:搜索類命令
?
?
????** 輸入 / 加上一個字符串可以用以在當前文件中查找該字符串。**
?
? 1. 在正常模式下輸入 / 字符。您此時會注意到該字符和光標都會出現在屏幕底
???? 部,這跟 : 命令是一樣的。
?
? 2. 接著輸入 errroor<回車>。那個errroor就是您要查找的字符串。
?
? 3. 要查找同上一次的字符串,只需要按 n 鍵。要向相反方向查找同上一次的字
???? 符串,請輸入大寫 N 即可。
?
? 4. 如果您想逆向查找字符串,請使用 ? 代替 / 進行。
?
? 5. 要回到您之前的位置按CTRL-O (按住 Ctrl 鍵不放同時按下字母 o)。重復按可以
???? 回退更多步。CTRL-I 會跳轉到較新的位置。
?
--->?"errroor" is not the way to spell error;? errroor is an error.
提示:如果查找已經到達文件末尾,查找會自動從文件頭部繼續查找,除非
?????'wrapscan' 選項被復位。
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????????????????? 第四講第三節:配對括號的查找
?
?
????????????? ** 輸入 % 可以查找配對的括號 )、]、}。**
?
? 1. 把光標放在本節下面標記有--> 那一行中的任何一個 (、[ 或 { 處。
?
? 2. 接著按 % 字符。
?
? 3. 此時光標的位置應當是在配對的括號處。
?
? 4. 再次按 % 就可以跳回配對的第一個括號處。
?
? 5. 移動光標到另一個 (、)、[、]、{ 或 } 處,按 % 查看其所作所為。
?
---> This ( is a test line with ('s, ['s] and {'s } in it. ))
?
?
提示:在程序調試時,這個功能用來查找不配對的括號是很有用的。
?
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
????????????????????? 第四講第四節:替換命令
?
?
??????????????? ** 輸入:s/old/new/g 可以替換 old 為 new。**
? 1. 請將光標移動到本節中下面標記有 ---> 的那一行。
?
? 2. 輸入:s/thee/the <回車> 。請注意該命令只改變光標所在行的第一個匹配
???? 串。
?
? 3. 輸入:s/thee/the/g 則是替換全行的匹配串,該行中所有的 "thee" 都會被
???? 改變。
?
---> thee best time to see thee flowersis in thee spring.
?
? 4. 要替換兩行之間出現的每個匹配串,請
???? 輸入?? :#,#s/old/new/g?? 其中 #,# 代表的是替換操作的若干行中
????????????????????????????? 首尾兩行的行號。
???? 輸入?? :%s/old/new/g???? 則是替換整個文件中的每個匹配串。
???? 輸入?? :%s/old/new/gc??? 會找到整個文件中的每個匹配串,并且對每個匹配串
????????????????????????????? 提示是否進行替換。
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????????????????????????????? 第四講小結
?
?
? 1.CTRL-G 用于顯示當前光標所在位置和文件狀態信息。
????G 用于將光標跳轉至文件最后一行。
???? 先敲入一個行號然后輸入大寫G 則是將光標移動至該行號代表的行。
????gg 用于將光標跳轉至文件第一行。
?
? 2. 輸入 / 然后緊隨一個字符串是在當前所編輯的文檔中正向查找該字符串。
???? 輸入 ? 然后緊隨一個字符串則是在當前所編輯的文檔中反向查找該字符串。
???? 完成一次查找之后按 n 鍵是重復上一次的命令,可在同一方向上查
找下一個匹配字符串所在;或者按大寫 N 向相反方向查找下一匹配字符串所在。
????CTRL-O 帶您跳轉回較舊的位置,CTRL-I 則帶您到較新的位置。
?
? 3. 如果光標當前位置是括號(、)、[、]、{、},按 % 會將光標移動到配對的括號上。
?
? 4. 在一行內替換頭一個字符串old 為新的字符串 new,請輸入? :s/old/new
???? 在一行內替換所有的字符串old 為新的字符串 new,請輸入? :s/old/new/g
???? 在兩行內替換所有的字符串old 為新的字符串 new,請輸入? :#,#s/old/new/g
???? 在文件內替換所有的字符串old 為新的字符串 new,請輸入? :%s/old/new/g
???? 進行全文替換時詢問用戶確認每個替換需添加 c 標志??????? :%s/old/new/gc
?
第五講第一節:在 VIM 內執行外部命令的方法
?
?
??????????** 輸入 :! 然后緊接著輸入一個外部命令可以執行該外部命令。**
?
? 1. 按下我們所熟悉的 : 命令使光標移動到屏幕底部。這樣您就可以輸入一行命令了。
?
? 2. 接著輸入感嘆號 ! 這個字符,這樣就允許您執行外部的 shell 命令了。
?
? 3. 我們以 ls 命令為例。輸入 !ls<回車> 。該命令就會列舉出您當前目錄的
???? 內容,就如同您在命令行提示符下輸入 ls 命令的結果一樣。如果 !ls 沒起
???? 作用,您可以試試:!dir 看看。
?
提示:所有的外部命令都可以以這種方式執行,包括帶命令行參數的那些。
?
提示:所有的 : 命令都必須以敲 <回車> 鍵結束。從今以后我們就不會總是提到這一點
?? ???了。
?
?
?
?
?
第五講第二節:關于保存文件的更多信息
?
?
????????????** 要將對文件的改動保存到文件中,請輸入 :w FILENAME 。**
?
? 1. 輸入 :!dir 或者 :!ls 獲知當前目錄的內容。您應當已知道最后還得敲
????<回車> 吧。
?
? 2. 選擇一個未被用到的文件名,比如 TEST。
?
? 3. 接著輸入 :wTEST? (此處 TEST 是您所選擇的文件名。)
?
? 4. 該命令會以 TEST 為文件名保存整個文件(Vim 教程)。為了驗證這一點,
???? 請再次輸入 :!dir 或 :!ls 查看您的目錄列表內容。
?
請注意:如果您退出 Vim 然后在以命令 vim TEST 再次啟動 Vim,那么該文件內
???? 容應該同您保存時的文件內容是完全一樣的。
?
? 5. 現在您可以刪除 TEST 文件了。在 MS-DOS 下,請輸入:?? :!del TEST
???????????????????????????????? 在 Unix 下,請輸入:???? :!rm TEST
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
??????????????????? 第五講第三節:一個具有選擇性的保存命令
?
?
???????????** 要保存文件的部分內容,請輸入 v motion :w FILENAME **
?
? 1. 移動光標到本行。
? 2. 接著按 v 鍵,將光標移動至下面第五個條目上。您會注意到之間的文本被高亮了。
?
? 3. 然后按 : 字符。您將看到屏幕底部會出現 :'<,'> 。
?
? 4. 現在請輸入 w TEST,其中 TEST 是一個未被使用的文件名。確認您看到了
????:'<,'>w TEST 之后按 <回車> 鍵。
?
? 5. 這時 Vim 會把選中的行寫入到以TEST 命名的文件中去。使用 :!dir 或 :!ls
???? 確認文件被正確保存。這次先別刪除它!我們在下一講中會用到它。
?
提示:按 v 鍵使 Vim 進入可視模式進行選取。您可以四處移動光標使選取區域變大或
?????變小。接著您可以使用一個操作符對選中文本進行操作。例如,按 d 鍵會刪除
?????選中的文本內容。
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????????????????? 第五講第四節:提取和合并文件
?
?
??????** 要向當前文件中插入另外的文件的內容,請輸入 :r FILENAME **
?
? 1. 請把光標移動到本行上面一行。
?
特別提示:執行步驟2之后您將看到第五講第三節的文字,請屆時往下移動
????????? 以再次看到本講內容。
?
? 2. 接著通過命令 :rTEST 將前面創建的名為 TEST 的文件提取進來。
???? 您所提取進來的文件將從光標所在位置處開始置入。
? 3. 為了確認文件已經提取成功,移動光標回到原來的位置就可以注意有兩份第
???? 五講第三節的內容,一份是原始內容,另外一份是來自文件的副本。
?
提示:您還可以讀取外部命令的輸出。例如, :r !ls 可以讀取 ls 命令的輸出,并
?????把它放置在光標下面。
?
?
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????????????????????????????? 第五講小結
?
?
? 1.:!command 用于執行一個外部命令 command。
?
???? 請看一些實際例子:
????????(MS-DOS)???????? (Unix)
?????????:!dir??????????? :!ls??????????? -?用于顯示當前目錄的內容。
?????????:!del FILENAME?? :!rmFILENAME?? -? 用于刪除名為 FILENAME 的文件。
?
? 2.:w FILENAME? 可將當前 VIM 中正在編輯的文件保存到名為FILENAME 的文
???? 件中。
?
? 3.v motion :w FILENAME 可將當前編輯文件中可視模式下選中的內容保存到文件
????FILENAME 中。
?
? 4.:r FILENAME 可提取磁盤文件 FILENAME 并將其插入到當前文件的光標位置
???? 后面。
? 5.:r !dir 可以讀取 dir 命令的輸出并將其放置到當前文件的光標位置后面。
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
???????????????????????? 第六講第一節:打開類命令
?
?
????????** 輸入 o 將在光標的下方打開新的一行并進入插入模式。**
?
? 1. 請將光標移動到本節中下面標記有 ---> 的那一行。
?
? 2. 接著輸入小寫的 o 在光標 *下方* 打開新的一行,這個命令會使您
???? 進入插入模式。
?
? 3. 然后輸入一些文字,之后按<ESC> 鍵退出插入模式而進入正常模式。
?
---> After typing? o? thecursor is placed on the open line in Insert mode.
?
? 4. 為了在光標 *上方* 打開新的一行,只需要輸入大寫的 O 而不是小寫的 o
???? 就可以了。請在下行測試一下吧。
?
---> Open up a line above this by typingO while the cursor is on this line.
?
?
?
?
????????????????????? 第六講第二節:附加類命令
?
?
???????????????????? ** 輸入 a 將可在光標之后插入文本。**
?
? 1. 請在正常模式下將光標移動到本節中下面標記有 ---> 的第一行的行首。
?
? 2. 接著輸入 e 直到光標位于 li 的末尾。
?
? 3. 輸入小寫的 a 則可在光標之后插入文本了。
?
? 4. 將單詞補充完整,就像下一行中的那樣。之后按 <ESC> 鍵退出插入模式回到
???? 正常模式。
?
? 5. 使用 e 移動光標到下一步不完整的單詞,重復步驟3和步驟4。
?
---> This li will allow you to practappendi text to a line.
---> This line will allow you topractice appending text to a line.
?
提示:a、i 和 A 都會帶您進入插入模式,惟一的區別在于字符插入的位置。
?
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
??????????????????? 第六講第三節:另外一個置換類命令的版本
?
?
????????????????????? ** 輸入大寫的 R 可連續替換多個字符。**
?
? 1. 請將光標移動到本節中下面標記有 ---> 的第一行。移動光標到第一個 xxx 的
???? 起始位置。
? 2. 然后輸入大寫的 R 開始把第一行中的不同于第二行的剩余字符逐一輸入,就
???? 可以全部替換掉原有的字符而使得第一行完全雷同第二行了。
?
? 3. 接著按<ESC> 鍵退出替換模式回到正常模式。您可以注意到尚未替換的文本
???? 仍然保持原狀。
?
? 4. 重復以上步驟,將剩余的xxx 也替換掉。
?
---> Adding 123 to xxx gives you xxx.
---> Adding 123 to 456 gives you 579.
?
提示:替換模式與插入模式相似,不過每個輸入的字符都會刪除一個已有的字符。
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
????????????????????????? 第六講第四節:復制粘貼文本
?
?
???????????????? ** 使用操作符 y 復制文本,使用 p 粘貼文本 **
?
? 1. 定位到下面標記有---> 的一行,將光標移動到 "a)" 之后。
?
? 2. 接著使用 v 進入可視模式,移動光標到"first" 的前面。
?
? 3. 現在輸入 y 以抽出(復制)高亮的文本。
?
? 4. 然后移動光標到下一行的末尾:j$
?
? 5. 接著輸入 p 以放置(粘貼)復制了的文本。然后輸入:asecond <ESC>。
6. 使用可視模式選中 "item.",用 y 復制,再用 j$ 將光標移動到下一行末尾,
???? 用 p 將文本粘貼到那里。
?
--->?a) this is the first item.
?????b)
?
? 提示:您還可以把 y 當作操作符來使用;例如yw 可以用來復制一個單詞。
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
??????????????????????????? 第六講第五節:設置類命令的選項
?
?
????????????????? ** 設置可使查找或者替換可忽略大小寫的選項 **
?
? 1. 要查找單詞 ignore 可在正常模式下輸入/ignore <回車>。
???? 要重復查找該詞,可以重復按n 鍵。
?
? 2. 然后設置 ic 選項(IgnoreCase,忽略大小寫),請輸入: :set ic
?
? 3. 現在可以通過鍵入 n 鍵再次查找單詞ignore。注意到 Ignore 和 IGNORE 現在
???? 也被找到了。
?
? 4. 然后設置 hlsearch和 incsearch 這兩個選項,請輸入: :set hls is
?
? 5. 現在可以再次輸入查找命令,看看會有什么效果: /ignore <回車>
?
? 6. 要禁用忽略大小寫,請輸入::set noic
?
提示:要移除匹配項的高亮顯示,請輸入:? :nohlsearch
提示:如果您想要僅在一次查找時忽略字母大小寫,您可以使用 \c:
?????/ignore\c <回車>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????????????????????????????? 第六講小結
?
? 1. 輸入小寫的 o 可以在光標下方打開新的一行并進入插入模式。
???? 輸入大寫的 O 可以在光標上方打開新的一行。
?
? 2. 輸入小寫的 a 可以在光標所在位置之后插入文本。
???? 輸入大寫的 A 可以在光標所在行的行末之后插入文本。
?
? 3.e 命令可以使光標移動到單詞末尾。
?
? 4. 操作符 y 復制文本,p 粘貼先前復制的文本。
?
? 5. 輸入大寫的 R 將進入替換模式,直至按<ESC> 鍵回到正常模式。
?
? 6. 輸入 :set xxx 可以設置 xxx 選項。一些有用的選項如下:
???????'ic' 'ignorecase'?????? 查找時忽略字母大小寫
???????'is' 'incsearch'??????? 查找短語時顯示部分匹配
???????'hls' 'hlsearch'??????? 高亮顯示所有的匹配短語
???? 選項名可以用完整版本,也可以用縮略版本。
?
? 7. 在選項前加上 no 可以關閉選項:? :set noic
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
????????????????????????? 第七講第一節:獲取幫助信息
?
?
????????????????????? ** 使用在線幫助系統 **
? Vim擁有一個細致全面的在線幫助系統。要啟動該幫助系統,請選擇如下三種方
? 法之一:
???????- 按下 <HELP> 鍵 (如果鍵盤上有的話)
???????- 按下 <F1> 鍵 (如果鍵盤上有的話)
???????- 輸入? :help <回車>
?
? 請閱讀幫助窗口中的文字以了解幫助是如何工作的。
? 輸入 CTRL-WCTRL-W?? 可以使您在窗口之間跳轉。
? 輸入 :q <回車> 可以關閉幫助窗口。
?
? 提供一個正確的參數給":help"命令,您可以找到關于該主題的幫助。請試驗以
? 下參數(可別忘了按回車鍵哦):
?
???????:help w
???????:help c_CTRL-D
???????:help insert-index
???????:help user-manual
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????????????????????? ???第七講第二節:創建啟動腳本
?
?
????????????????????????? ** 啟用 Vim 的特性 **
?
? Vim的功能特性要比 Vi 多得多,但其中大部分都沒有缺省啟用。為了使用更多的
? 特性,您得創建一個vimrc 文件。
?
? 1. 開始編輯 vimrc 文件,具體命令取決于您所使用的操作系統:
???????:edit ~/.vimrc????????? 這是 Unix 系統所使用的命令
???????:edit $VIM/_vimrc?????? 這是 MS-Windows系統所使用的命令
2. 接著讀取 vimrc 示例文件的內容:
???????:r $VIMRUNTIME/vimrc_example.vim
?
? 3. 保存文件,命令為:
???????:write
?
? 下次您啟動 Vim 時,編輯器就會有了語法高亮的功能。
? 您可以把您喜歡的各種設置添加到這個 vimrc 文件中。
? 要了解更多信息請輸入:help vimrc-intro
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
??????????????????????????? 第七講第三節:補全功能
?
?
????????????? ** 使用 CTRL-D 和 <TAB>可以進行命令行補全 **
?
? 1. 請確保 Vim 不是在以兼容模式運行::set nocp
?
? 2. 查看一下當前目錄下已經存在哪些文件,輸入: :!ls?? 或者? :!dir
?
? 3. 現在輸入一個目錄的起始部分,例如輸入: :e
?
? 4. 接著按 CTRL-D 鍵,Vim 會顯示以 e 開始的命令的列表。
?
? 5. 然后按<TAB> 鍵,Vim 會補全命令為 :edit 。
?
? 6. 現在添加一個空格,以及一個已有文件的文件名的起始部分,例如: :edit FIL
?
? 7. 接著按<TAB> 鍵,Vim 會補全文件名(如果它是惟一匹配的)
提示:補全對于許多命令都有效。您只需嘗試按 CTRL-D 和 <TAB>。
?????它對于 :help 命令非常有用。
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
????????????????????????????????? 第七講小結
?
?
? 1. 輸入 :help 或者按<F1> 鍵或 <Help> 鍵可以打開幫助窗口。
?
? 2. 輸入 :help cmd 可以找到關于 cmd 命令的幫助。
?
? 3. 輸入 CTRL-WCTRL-W? 可以使您在窗口之間跳轉。
?
? 4. 輸入 :q 以關閉幫助窗口
?
? 5. 您可以創建一個 vimrc啟動腳本文件用來保存您偏好的設置。
?
? 6. 當輸入 : 命令時,按 CTRL-D 可以查看可能的補全結果。
???? 按 <TAB>可以使用一個補全。
?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?
? vim教程到此就結束了。本教程只是為了簡明地介紹一下 Vim 編輯器,但已足以讓您
? 很容易使用這個編輯器了。毋庸質疑,vim還有很多很多的命令,本教程所介
? 紹的距離完整的差得很遠。所以您要精通的話,還望繼續努力哦。下一步您可以閱讀
? Vim的用戶手冊,使用的命令是: :help user-manual
?
? 下面這本書值得推薦用于更進一步的閱讀和學習:
???????Vim - Vi Improved - 作者:Steve Oualline
???????出版社:New Riders
? 這是第一本完全講解 Vim的書籍。它對于初學者特別有用。其中包含有大量實例
? 和圖示。
? 欲知詳情,請訪問http://iccf-holland.org/click5.html
?
? 以下這本書比較老了而且內容更多是關于 Vi 而非 Vim,但是也值得推薦:
???????Learning the Vi Editor - 作者:Linda Lamb
???????出版社:O'Reilly & Associates Inc.
? 這是一本不錯的書,通過它您幾乎能夠了解到任何您想要使用 Vi 做的事情。
? 此書的第六個版本也包含了一些關于 Vim 的信息。
?
? 本教程是由來自Calorado School of Mines 的 Michael C. Pierce 和
?Robert K. Ware 所編寫的,其中很多創意由來自 Colorado State University 的
?Charles Smith 提供。編者的電子郵箱是:bware@mines.colorado.edu
?
? 本教程已由 BramMoolenaar 專為 Vim 進行修訂。
?
? 譯制者附言:
?===========
?????簡體中文教程翻譯版之譯制者為梁昌泰 <beos@turbolinux.com.cn>,還有
另外一個聯系地址:linuxrat@gnuchina.org。
?
?????繁體中文教程是從簡體中文教程翻譯版使用 Debian GNU/Linux 中文項目小
?????組的于廣輝先生編寫的中文漢字轉碼器? autoconvert 轉換而成的,并對轉
?????換的結果做了一些細節的改動。
?
? 變更記錄:
?=========
?????2012年10月01日趙濤 <alick9188@gmail.com>
?????將 vimtutor 中譯版從 1.5 升級到 1.7。
?
?????2002年08月30日梁昌泰 <beos@turbolinux.com.cn>
?????感謝 RMS@SMTH 的指正,將多處錯誤修正。
?
?????2002年04月22日梁昌泰 <linuxrat@gnuchina.org>
?????感謝 xuandong@sh163.net 的指正,將兩處錯別字修正。
?
?????2002年03月18日梁昌泰 <linuxrat@gnuchina.org>
?????根據Bram Molenaar先生在2002年03月16日的來信要求,將vimtutor1.4中譯
?????版升級到vimtutor1.5。
?
?????2001年11月15日梁昌泰 <linuxrat@gnuchina.org>
?????將vimtutor1.4中譯版提交給Bram Molenaar和Sven Guckes。
轉載于:https://blog.51cto.com/haoyuange/1914345