1. 程式人生 > >vim 文字編輯器

vim 文字編輯器

vim 文字編輯器

1 什麼是 vim?

早期的Unix都是使用的vi作為系統預設的編輯器。
但是目前我們使用比較多的是 vim 編輯器。你也許會有疑問,vi與vim有什麼區別?可以這樣簡單理解,vim是vi的升級版。Vim是從 vi 發展出來的一個文字編輯器。程式碼補完、編譯及錯誤跳轉等方便程式設計的功能特別豐富,在程式設計師中被廣泛使用。

2 基本介紹

2.1 文字編輯器:

文字:純文字,ASCII text;Unicode;

2.2 文字編輯種類

行編輯器:sed

全屏編輯器:nano, vi
vi: Visual Interface;視覺化編輯器
vim: Vi IMproved;增強版

3 進入vim

# vim [options] [file ..]
    右下角顯示第幾行第幾個位元組;
命令 描述
vim filename 開啟或新建檔案,並將游標置於第一行首
vim +n filename 開啟檔案,並將游標置於第n行首
vim + filename 開啟檔案,定位至尾行行首
vim +/pattern filename 開啟檔案,定位至第一次被pattern匹配到的行的行首;(/pattern)正則表示式;
vim -r filename 在上次正用vim編輯時發生系統崩潰,恢復filename
vim filename….filename 開啟多個檔案,依次編輯

4 三種模式:

編輯模式(Command mode) :也叫命令模式;控制游標移動,可對文字進行復制、貼上、刪除和查詢等工作。
輸入模式(Insert mode) :正常的文字錄入。
末行模式(Last line mode):儲存或退出文件,以及設定編輯環境。

4.1 模式切換

使用者剛剛啟動vi/vim,預設進入編輯模式,
此狀態下敲擊鍵盤動作會被Vim識別為命令,而非輸入字元。比如我們此時按下i,並不會輸入一個字元,i被當作了一個命令。

簡單的說,我們可以將這三個模式想成底下的圖示來表示:

4.1.1 編輯模式 --> 輸入模式:

i:insert, 在游標所在處輸入;
a: append,在游標在處後一位元組輸入;
o:在游標所在處的下方開啟一個新行;

I:在游標所在行的行首輸入;
A:在游標所在行的行尾輸入;
O:在游標所在處的上方開啟一個新行;

4.1.2 輸入模式 --> 編輯模式

ESC

4.1.3 編輯模式 --> 末行模式

:       # 英文冒號

4.1.4 末行模式 --> 編輯模式

ESC     # 兩次ESC

或者

:行號 # 跳轉到指定行

5 關閉檔案

5.1 編輯模式下

命令 作用
ZZ 儲存並退出,注意是大寫'Z'

5.2 末行模式

命令 作用
:w 儲存
:w! 強行儲存
:q 退出
:q! 強制退出(放棄對文件的修改內容)
:wq 儲存並退出,相當於:w, :q
:wq! 強制儲存退出
:x 儲存並退出
:w /PATH/TO/SOMEFILE 儲存修改到指定路徑下,相當於另存為

6 游標移動(編輯模式)

6.1 字元間移動

游標在螢幕文字中的移動既可以用箭頭鍵,也可以使用 hjkl 字母鍵。

h:左
j:下
k:上
l:右
#COMMAND:跳轉由#指定的個數的字元;

6.2 以單詞為單位移動

w:下一個單詞的詞首;
e:當前或後一個單詞的詞尾;
b:當前或前一個單詞的詞首;
#COMMAND:跳轉由#指定的個數的單詞;

6.3 行內移動:

^:跳轉至行首的第一個非空白字元;
0(數字0鍵):跳轉至行首;
$:跳轉至行尾;

6.4 行間移動

gg  :第一行;
#G  :跳轉至由#指定的行;
G   :最後一行;
末行模式下,直接給出行號即跳轉到編輯模式下的指定行,

6.5 句間移動:

):跳轉下一句
(:跳轉上一句

6.6 段間移動

}:下一段落
{:上一段落

6.7 翻屏:

Ctrl+f:向檔案尾部翻一屏
Ctrl+b:向檔案首部翻一屏

Ctrl+d:向檔案尾部翻半屏
Ctrl+u:向檔案首部翻半屏
Enter: 按行向下翻;

7 vim編輯模式下的命令

7.1 字元編輯

x: 刪除游標所在處的字元;
#x:刪除游標所在處起始的#個字元;

xp:交換游標所在處的字元與其後面的字元的位置;

7.2 替換命令(replace)

r:替換游標所在處的字元;
    rCHAR

7.3 刪除命令

d:刪除命令,可結合游標跳轉字元,實現範圍刪除,實際上是剪下命令,刪除的內容可以通過p貼上;

d$:刪除當前游標所在處至行尾;
d^:刪除游標之前的字元一直到行首;

db:刪除當前游標之前的一個單詞;
de:刪除當前游標到到此單詞的詞尾;
dw:刪除當前游標到到下一個單詞的詞首;
    #COMMAND:命令前可加數字;
        例:3dw

dd:刪除游標所在處的行;
    #dd:刪除游標所處的行起始的共#行;

7.4 貼上命令(p, put, paste)

p(小寫):緩衝區中的內容如果為整行,則貼上在當前游標所在行的下方;否則,則貼上至當前游標所在處的後方;
P(大寫):緩衝區中的內容如果為整行,則貼上在當前游標所在行的上方;否則,則貼上至當前游標所在處的前方;

7.5 複製命令(yank, y):

y:複製,工作行為相似於d命令;

y$:複製當前游標所在處至行尾;
y^:複製游標之前的字元一直到行首;
y0:複製從游標所在處的前一個字元到行首;

yb:複製當前游標之前的一個單詞;
ye:複製當前游標到到此單詞的詞尾;
yw:複製當前游標到到下一個單詞的詞首;
    #COMMAND

yy:複製一整行
    #yy:複製#行

7.6 改變命令(change, c):

編輯模式 --> 輸入模式,實現刪除操作;
'c' 比 'd' 多一個切換到輸入模式;

c$:刪除當前游標所在處至行尾,並切換到輸入模式;
c^:刪除游標之前的字元一直到行首,並切換到輸入模式;
c0:刪除游標之前的字元一直到行首,並切換到輸入模式;

cb:刪除當前游標之前的一個單詞,並切換到輸入模式;
ce:刪除當前游標到到此單詞的詞尾,並切換到輸入模式;
cw:刪除當前游標到到下一個單詞的詞首,並切換到輸入模式;
    #COMMAND

cc:刪除游標所在的行,並轉換為輸入模式;
    #cc:刪除游標所處的行起始的共#行,並切換為輸入模式;

7.7 其它編輯操作

7.7.1 視覺化模式:和滑鼠選定類似;選擇不同行內容

v:按字元選定;
V:按行選定;

結合編輯命令使用:d, c, y

7.7.2 撤銷(undo)操作

u:撤銷前一次的編輯操作;預設可以往前恢復50次操作;
#u:撤銷此前的#個操作;

撤消最近一次撤消操作:

Ctrl+r

7.7.3 重複執行前一個編輯操作

.:(點號)

8 輸入模式

在輸入模式中,可以使用以下按鍵:

字元按鍵以及Shift組合,輸入字元
ENTER,回車鍵,換行
BACK SPACE,退格鍵,刪除游標前一個字元
DEL,刪除鍵,刪除游標後一個字元
方向鍵,在文字中移動游標
HOME/END,移動游標到行首/行尾
Page Up/Page Down,上/下翻頁
Insert,切換游標為輸入/替換模式,游標將變成豎線/下劃線
ESC,退出輸入模式,切換到命令模式

9 末行模式

在命令模式下按下:(英文冒號)就進入了底線命令模式。內建的命令列介面

9.1 跟shell互動

:! COMMAND

9.2 地址定界

:start_pos[,end_pos]    #起始位置和結束位置;
    #:特定的第#行,例如5即第5行;
    .:當前行;
    $:最後一行;
    #,#:指定行範圍,左側為起始行,右側為結束行;從第幾行到第幾行;
    #,+#:指定行範圍,左側為超始行絕對編號,右側為相對左側行號的偏移量;例如:3,+7 #表示從第三行開始往後加7行,共八行;
        .,$-1:從游標所在處的當前行到倒數第二行的範圍;
        1,$:全文
    %:全文 
    /pattern/:從游標所在處起始向檔案尾部第一次被模式所匹配到的行;
        /first/d :刪除當前游標所在處至尾行第一個被匹配到的行; 
        /first/,$:從游標所在處起始向檔案尾部所有被模式所匹配到的行;例刪除  :/second/,$d
    /pat1/,/pat2/:從游標所在處起始,第一次由pat1匹配到的行開始,至第一次由pat2匹配到的行結束之間的所有行;
        例  :/Dec/,/mount/d

可同編輯命令一同使用,實現編輯操作:直接挨著,中間沒有其他字元或空格;

    d: 刪除
    y:複製,工作行為相似於d命令;
    c:修改;

    w /PATH/TO/SOMEFILE:將範圍內的文字另存到指定的檔案中;到新檔案或覆蓋舊檔案;
        :/Dec/,/mount/w  /root/outsome.txt
    r  /PATH/FROM/SOMEFILE:將指定的檔案中的文字插入至指定位置;
        :5r /root/test.txt      #將/root/test.txt複製到本檔案的第五行;

9.3 查詢

/PATTERN:從當前游標所在處向檔案尾部查詢能夠被當前模式匹配到的所有字串;
?PATTERN:從當前游標所在處向檔案首部查詢能夠被當前模式匹配到的所有字串;
    n:下一個,與命令方向相同;
    N:上一個,與命令方向相反;

9.4 查詢並替換

s:末行模式的命令;使用格式:

s/要查詢的內容/替換為的內容/修飾符
要查詢的內容:可使用正則表示式;
替換為的內容:不能使用正則表示式,但可以引用;
如果“要查詢的內容”部分在模式中使用分組符號"{}":在“替換為的內容”中使用後向引用;例 \1 \2
直接引用查詢模式匹配到的全部文字,使用&符號代替前面所匹配的內容;

修飾符:

i:忽略大小寫;
g:全域性替換,意味著一行中如果匹配到多次,則均替換;

例:

:s/this/This/           # 只替換當前游標所在行第一個被匹配到內容;
:1,20s/this/This/       # 只替換第1到20行中每一行第一個被匹配到內容;
:1,20s/this/This/g      # 替換第1到20行中所有被匹配到內容;
:%s/this/THIS/ig        # 替換所有被匹配到內容,忽略大小寫;

可把分隔符替換為其它非常用字元:

[email protected]@@
s###

示例

:%s/\/cgroup\/systemd/\/etc\/sysconfig/g
:%[email protected]/cgroup/[email protected]/etc/[email protected]
%[email protected]\<t\([[:alpha:]]\+\)\>@T\[email protected]         #小寫t變成大寫T
%[email protected]\<t[[:alpha:]]\+\>@&[email protected]             #所以t在後面加er

練習:

1、複製/etc/grub2.cfg檔案至/tmp目錄中,用查詢替換命令刪除/tmp/grub2.cfg檔案中以空白字元開頭的行的行首的空白字元;

%[email protected]^[[:space:]]\[email protected]@
:%s#^[[:space:]]\{1,\}##

2、複製/etc/rc.d/init.d/functions檔案至/tmp目錄中,用查詢替換命令為/tmp/functions檔案的每個以空白字元開頭的行的行首加上#;

%[email protected]^[[:space:]]\+[^[:space:]]@#&@g          #一個或多個空白加非空白前面加#號;排除只有一個空白字元的行;
:%[email protected]^[[:space:]]@#&@

3、為/tmp/grub2.cfg檔案的前三行的行首加上#號;

:1,[email protected][^[:space:]]@#&@

4、將/etc/yum.repos.d/CentOS-Base.repo檔案中所有的enabled=0替換為enabled=1,所有gpgcheck=0替換為gpgcheck=1;

%[email protected]\(enabled\|gpgcheck\)[email protected]\[email protected]

10 vim的多檔案功能:

10.1 多檔案:

$ vim FILE1 FILE2 ...

在末行模式下檔案間切換:

:next 切換至下一個檔案
:prev 切換至前一個檔案
:last 切換至最後一個檔案
:first 切換至第一個檔案

退出所有檔案:

:wqall  # 儲存所有檔案並退出,其中的all可以簡寫為a,如:wqa
:wall
:qall   # 全部退出

10.2 分視窗編輯多個檔案

vim -o : 水平分割顯示
vim -O : 垂直分割顯示

在視窗間切換:Ctrl+w, ARROW

注意:單個檔案也可以分割為多個視窗進行檢視:

Ctrl+w, s:水平分割視窗
Ctrl+w, v:垂直分割視窗

11 定製vim的工作特性:

注意:在末行模式下的設定,僅對當前vim程序有效;
永久有效:

全域性:/etc/vimrc
      /etc/virc
使用者個人:~/.vimrc

11.1 行號

顯示:  set number 簡寫 set nu
取消顯示:set nonumber 簡寫 set nonu

11.2 括號匹配高亮,(已預設無法取消)

匹配:set showmatch, set sm
取消:set nosm

11.3 自動縮排

啟用:set ai
      set autoindent
禁用:set noai

11.4 高亮搜尋

查詢到的文字高亮顯示或取消

啟用:set hlsearch
禁用:set nohlsearch

11.5 語法高亮

啟用:syntax on
禁用:syntax off 

11.6 忽略字元大小寫

啟用:set ignorecase
      set ic

禁用:set noic

11.7 獲取幫助:

:help
:help subject   ;例  :help set

12 技巧:如何設定tab鍵縮排4個字元;

linux預設一個tab為8個字元

12.1 ubuntu

# vi /etc/vim/vimrc 將一個tab改為4個字元縮排
set tabstop=4

12.2 redhat

vim /etc/virc    --------將vi中一個tab改為4個字元縮排
vi /etc/vimrc    --------將vim中一個tab改為4個字元縮排
    set tabstop=4

13 警惕高效工具的危險

時間成本

給人一條vim命令,他能折騰一晚上,告訴他怎麼自定義vim命令,他能搗鼓一輩子。

14 附 vim 教程

在命令列輸入如下命令,即可進入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 from this 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 that don't belong paper in this sentence.

  5. 重複步驟3和步驟4,直至句子修正完畢。接著繼續第二講第二節內容。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      第二講第二節:更多刪除類命令

                   ** 輸入 d$ 從當前游標刪除到行末。**

  1. 請按下 <ESC> 鍵確保您處於正常模式。

  2. 請將游標移動到本節中下面標記有 ---> 的那一行。

  3. 請將游標移動到該行的尾部(也就是在第一個點號‘.’後面)。

  4. 然後輸入 d$ 從游標處刪至當前行尾部。

---> Somebody typed the end of this line twice. 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 you can 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 and reeplace 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 mrrf changing usf the change operator.
---> This line has a few words that need changing using the change operator.

提示:請注意 ce 命令不僅僅是刪除了一個單詞,它也讓您進入插入模式了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                       第三講第四節:使用c更改更多

           ** 更改類操作符可以與刪除中使用的同樣的動作配合使用。 **

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

         c    [number]   motion

  2. 動作引數(motion)也是一樣的,比如 w 代表單詞,$代表行末等等。

  3. 請將游標移動到本節中下面標記有 ---> 的第一行。

  4. 接著將游標移動到第一個錯誤處。

  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.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                  第三講小結

  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 flowers is 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. 接著輸入 :w TEST  (此處 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. 接著通過命令 :r TEST 將前面建立的名為 TEST 的檔案提取進來。
     您所提取進來的檔案將從游標所在位置處開始置入。

  3. 為了確認檔案已經提取成功,移動游標回到原來的位置就可以注意有兩份第
     五講第三節的內容,一份是原始內容,另外一份是來自檔案的副本。

提示:您還可以讀取外部命令的輸出。例如, :r !ls 可以讀取 ls 命令的輸出,並
      把它放置在游標下面。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                               第五講小結

  1. :!command 用於執行一個外部命令 command。

     請看一些實際例子:
         (MS-DOS)         (Unix)
          :!dir            :!ls            -  用於顯示當前目錄的內容。
          :!del FILENAME   :!rm FILENAME   -  用於刪除名為 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  the cursor is placed on the open line in Insert mode.

  4. 為了在游標 *上方* 開啟新的一行,只需要輸入大寫的 O 而不是小寫的 o
     就可以了。請在下行測試一下吧。

---> Open up a line above this by typing O 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 pract appendi text to a line.
---> This line will allow you to practice 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 以放置(貼上)複製了的文字。然後輸入:a second <ESC>。

  6. 使用可視模式選中 " item.",用 y 複製,再用 j$ 將游標移動到下一行末尾,
     用 p 將文字貼上到那裡。

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

  提示:您還可以把 y 當作操作符來使用;例如 yw 可以用來複制一個單詞。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            第六講第五節:設定類命令的選項

                  ** 設定可使查詢或者替換可忽略大小寫的選項 **

  1. 要查詢單詞 ignore 可在正常模式下輸入 /ignore <回車>。
     要重複查詢該詞,可以重複按 n 鍵。

  2. 然後設定 ic 選項(Ignore Case,忽略大小寫),請輸入: :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-W CTRL-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-W CTRL-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 提供。編者的電子郵箱是:[email protected]

  本教程已由 Bram Moolenaar 專為 Vim 進行修訂。

  譯製者附言:
  ===========
      簡體中文教程翻譯版之譯製者為樑昌泰 <[email protected]>,還有
      另外一個聯絡地址:[email protected]。

      繁體中文教程是從簡體中文教程翻譯版使用 Debian GNU/Linux 中文專案小
      組的於廣輝先生編寫的中文漢字轉碼器  autoconvert 轉換而成的,並對轉
      換的結果做了一些細節的改動。

  變更記錄:
  =========
      2012年10月01日 趙濤 <[email protected]>
      將 vimtutor 中譯版從 1.5 升級到 1.7。

      2002年08月30日 樑昌泰 <[email protected]>
      感謝 [email protected] 的指正,將多處錯誤修正。

      2002年04月22日 樑昌泰 <[email protected]>
      感謝 [email protected] 的指正,將兩處錯別字修正。

      2002年03月18日 樑昌泰 <[email protected]>
      根據Bram Molenaar先生在2002年03月16日的來信要求,將vimtutor1.4中譯
      版升級到vimtutor1.5。

      2001年11月15日 樑昌泰 <[email protected]>
      將vimtutor1.4中譯版提交給Bram Molenaar和Sven Guckes。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~