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

vim 文本編輯器

指定路徑 RoCE 句子 定位 ctrl+d 排除 外部命令 感到 tmp

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) :正常的文本錄入。
末行模式(Command-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        # 替換所有被匹配到內容,忽略大小寫;

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

s@@@
s###

示例

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

練習:

1、復制/etc/grub2.cfg文件至/tmp目錄中,用查找替換命令刪除/tmp/grub2.cfg文件中以空白字符開頭的行的行首的空白字符;

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

2、復制/etc/rc.d/init.d/functions文件至/tmp目錄中,用查找替換命令為/tmp/functions文件的每個以空白字符開頭的行的行首加上#;

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

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

:1,3s@[^[:space:]]@#&@

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

%s@\(enabled\|gpgcheck\)=0@\1=1@g

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]>
      感謝 RMS@SMTH 的指正,將多處錯誤修正。

      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。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

vim 文本編輯器