// Vim 教程
第一講
第一節︰移動光標
要移動光標,請依照說明分別按下 h、j、k、l 鍵。
^
k 提示︰ h 鍵位于左邊,每次按下就會向左移動。
< h l > l 鍵位于右邊,每次按下就會向右移動。
j j 鍵看起來很象一支尖端方向朝下的箭頭。
v
提示︰如果您不敢確定您所按下的字母,請按下鍵回到正常(Normal)模式。然後再次從鍵盤輸入您想要的命令。
提示︰光標鍵應當也能正常工作的。但是使用hjkl鍵,在習慣之後您就能夠快速地在屏幕內四處移動光標了。(因为光标键往往比较远 =_=)
第二節︰VIM的進入和退出
- 請按鍵(這是為了確保您處在正常模式)。
- 然後輸入︰:q! <回車>。這種方式的退出編輯器絕不會保存您進入編輯器以來所做的改動。如果您想保存更改再退出,請輸入︰:wq <回車>
第三節︰文本編輯之刪除
在正常(Normal)模式下,可以按下 x 鍵來刪除光標所在位置的字符。
第四節︰文本編輯之插入
在正常模式下,可以按下 i 鍵來插入文本。
第一講小結
- 光標在屏幕文本中的移動既可以用箭頭鍵,也可以使用 hjkl 字母鍵。
h (左移) j (下行) k (上行) l (右移)
- 欲進入vim編輯器(從命令行提示符),請輸入︰vim 文件名 <回車>
- 欲退出vim編輯器,請輸入以下命令放棄所有修改︰ :q!<回車>;或者輸入以下命令保存所有修改︰:wq<回車>
- 在正常模式下刪除光標所在位置的字符,請按:x
- 在正常模式下要在光標所在位置開始插入文本,請按︰i 輸入必要文本
特別提示︰按下 鍵會帶您回到正常模式或者取消一個不期望或者部分完成的命令。
好了,第一講到此結束。下面接下來繼續第二講的內容。
第二講
第一節︰刪除類命令
輸入 dw 可以從光標處刪除至一個單字/單詞的末尾。
特別提示︰您所輸入的 dw 會在您輸入的同時出現在屏幕的最後一行。如果您輸入有誤,請按下 鍵取消,然後重新再來。
青山:这个命令在一个空行上操作可以删除这个空行。
第二節︰其他刪除類命令
輸入 d$ 從當前光標刪除到行末。
青山:这个命令在一个空行上操作什么都不会发生
第三節︰關于命令和對象
刪除命令 d 的格式如下︰
[number] d object
或者 d [number] object
。
其意如下︰
- number - 代表執行命令的次數(可選項,缺省設置為 1 )。
- d - 代表刪除。
- object - 代表命令所要操作的對象(下面有相關介紹)。
一個簡短的對象列表︰
- w - 從當前光標當前位置直到單字/單詞末尾,连续的空格算一个单词。
- e - 從當前光標當前位置直到單字/單詞末尾,连续的空格不算单词。
- $ - 從當前光標當前位置直到當前行末。
第四節︰對象命令的特殊情況
輸入 dd 可以刪除整一個當前行。
鑒于整行刪除的高頻度,VIM 的設計者決定要簡化整行刪除,僅需要在同一行上擊打兩次 d 就可以刪除掉光標所在的整行了。
类似的 2dd 会删除两行。
第五節︰撤消類命令
輸入 u 來撤消最後執行的命令,輸入 U 來修正整行。**
Ctrl+r(在 vim 里,用 代表这个组合键)可以召回修改。
第二講小結
- 欲從當前光標刪除至單字/單詞末尾,請輸入︰dw
- 欲從當前光標刪除至當前行末尾,請輸入︰d$
- 欲刪除整行,請輸入︰dd
- 在正常模式下一個命令的格式是︰[number] command object 或者 command [number] object
- 欲撤消以前的操作,請輸入︰u (小寫的u);欲撤消在一行中所做的改動,請輸入 U (大寫的U);欲撤消以前的撤消命令,恢復以前的操作結果,請輸入︰CTRL-R
第三講
第一節︰置入類命令
輸入 p 將最後一次刪除的內容置入光標之後。
青山:如果用 dd 删除了一行,要把这一行放到某个位置的话,光标应该在想要插入的位置的上方。
第二節︰替換類命令
輸入 r 和一個字符替換光標所在位置的字符。
青山:不是只有 Insert 模式才可以改变文本,实际上,Insert 模式跟这个名字一样,在设计里只是插入用的,更改可以在 Normal 模式里面光标对准这个字符,按一下 r,然后输入你想改成的字母。
第三節︰更改類命令
要改變一個單字/單詞的部分或者全部,請輸入 cw。青山:这个命令删除这个位置之后到第一个单词结尾,然后进入插入模式。
第四節︰使用c指令的其他更改類命令
更改類指令可以使用同刪除類命令所使用的對象參數。
- 更改類指令的工作方式跟刪除類命令是一致的。操作格式是︰
[number] c object
或者c [number] object
- c$ 使得該行剩下的部分删除,并进入插入模式;同理有 ce。
第三講小結
- 要重新置入已經刪除的文本內容,請輸入小寫字母 p。該操作可以將已刪除的文本內容置于光標之後。如果最後一次刪除的是一個整行,那麼該行將置于當前光標所在行的下一行。
- 要替換光標所在位置的字符,請輸入小寫的 r 和要替換掉原位置字符的新字符即可。
- 更改類命令允許您改變指定的對象,從當前光標所在位置直到對象的末尾。比如輸入 cw 可以替換當前光標到單詞的末尾的內容;輸入 c$ 可以替換當前光標到行末的內容。
- 更改類命令的格式是︰
[number] c object 或者 c [number] object
第四講
第一節︰定位及文件狀態
:123 就是移动到 123 行,同样还有 123G(G是大写,也就是说要按 )。
第四講第二節︰搜索類命令
輸入 / 以及尾隨的字符串可以用以在當前文件中查找該字符串。/string会找到 string 在下文中的第一个位置。之后在找下一个不必再输入一次,只要按 n 即可。而 N 会跳到上一个位置。
? 也是查找,但是与 / 不同,它是往上文找而不是下文。(不过功能完全可以用 / 实现所以不用也罢……)。
提示︰如果查找已經到達文件末尾,查找會自動從文件頭部繼續查找。
第四講第三節︰配對括號的查找
按 % 可以查找配對的括號。
提示︰在程序調試時,這個功能用來查找不配對的括號是很有用的。
青山:但是吧……有括号配对的自动高亮的情况下,如果不是一个括号跨越的太长这个命令也基本用不到。
第四講第四節︰替换
输入 :s/old/new 会把光标之后的第一个匹配到的 old 改成 new;如果要把一行的 old 都变成 new 则需要 :s/old/new/g
全文范围更改的话是 :%s/old/new/g;如果要规定行范围的话,比如 12 到 20 行,那么使用 :12,20s/old/new/g
:12,$s/old/new/g 作用到 12 行到全文结束(以防你不知道全文多少行)。
第四講小結
- :123 就是移动到 123 行,同样还有 123G(G是大写,也就是说要按 )。
- 輸入 / 然後緊隨一個字符串是則是在當前所編輯的文檔中向後查找該字符串。 輸入問號 ? 然後緊隨一個字符串是則是在當前所編輯的文檔中向前查找該字符串。完成一次查找之後按 n 鍵則是重復上一次的命令,可在同一方向上查找下一個字符串所在;或者按 Shift-N 向相反方向查找下該字符串所在。
- 如果光標當前位置是括號(、)、[、]、{、},按 % 可以將光標移動到配對的括號上。
- 在一行內替換頭一個字符串 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 內執行外部命令的方法
輸入 :! 然後緊隨著輸入一個外部命令可以執行該外部命令。
- 按下我們所熟悉的 : 命令設置光標到屏幕底部。這樣就可以讓您輸入命令了。
- 接著輸入感嘆號 ! 這個字符,這樣就允許您執行外部的 shell 命令了。
- 我們以 ls 命令為例。輸入 !ls <回車> 。該命令就會列舉出您當前目錄的
內容,就如同您在命令行提示符下輸入 ls 命令的結果一樣。如果 !ls 沒起
作用,您可以試試 :!dir 看看。
青山:有了这个东西 vim 就成神了。注意这里的执行路径是 vim 的当前位置,不一定是文件的位置。
第二節︰關于保存文件的更多信息
要將對文件的改動保存到文件中,請輸入 :w FILENAME
- 輸入 :!dir 或者 :!ls 獲知當前目錄的內容。您應當已知道最後還得敲 <回車> 吧。
- 選擇一個尚未存在文件名,比如 TEST。
3.接著輸入 :w TEST (此處 TEST 是您所選擇的文件名)。
- 該命令會以 TEST 為文件名保存整個文件 (VIM 教程)。為了確保正確保存,請再次輸入 :!dir 查看您的目錄列表內容。
- 現在您可以通過輸入 :!rm TEST 來刪除 TEST 文件了。
第三節︰一個具有選擇性的保存命令
:12,20 w FILENAME 把 12 行到 20 行的内容保存到 FILENAME 指定的文件里。
第四節︰提取和合並文件
输入 :r FILENAME,FILENAME 的内容会插入到当前文件中,放入当前光标位置之后。这个也是相当实用呐~
第五講小結
- :!command 用于執行一個外部命令 command。
請看一些實際例子︰
:!dir - 用于顯示當前目錄的內容。
:!rm FILENAME - 用于刪除名為 FILENAME 的文件。
- :w FILENAME 可將當前 VIM 中正在編輯的文件保存到名為 FILENAME 的文件中。
- :12,20w FILENAME 可將當前編輯文件第 12 行至第 20 行的內容保存到文件 FILENAME 中。
- :r FILENAME 可提取磁盤文件 FILENAME 並將其插入到當前文件的光標位置
後面。
第六講
第一節︰打開類命令
o 为在当前行下一行插入空行,然后开始插入;O 对应的是上一行。
第二節︰光標後插入類命令
輸入 a 將可在光標之後插入文本。A 直接往本行的末尾插入。
第三節︰另外一個置換類命令的版本
輸入大寫的 R 可連續替換多個字符。类似 windows 的 insert 模式。光标键入的字符会覆盖现存的字符。用 退出。这个模式叫做替换模式。
第四節︰設置類命令的選項
設置可使查找或者替換可忽略大小寫的選項
- 要查找單詞 ignore 可在正常模式下輸入 /ignore 。要重復查找該詞,可以重復按 n 鍵。(前面说过的你还记得嘛~)
- 然後設置 ic 選項(ic就是英文忽略大小寫Ignore Case的首字母縮寫詞),即
輸入︰:set ic
- 現在可以通過鍵入 n 鍵再次查找單詞 ignore。重復查找可以重復鍵入 n 鍵。
- 然後設置 hlsearch 和 incsearch 這兩個選項,輸入以下內容︰
:set hls is
- 現在可以再次輸入查找命令,看看會有什麼效果︰/ignore
青山:ic 会忽视大小写的不同来查找单词;hls 会高亮查找到的单词;is 没看懂帮助。noic,nohls,nois 会取消上述的选项。
第六講小結
- 輸入小寫的 o 可以在光標下方打開新的一行並將光標置于新開的行首,進入插入模式。輸入大寫的 O 可以在光標上方打開新的一行並將光標置于新開的行首,進入插入模式。
- 輸入小寫的 a 可以在光標所在位置之後插入文本。輸入大寫的 A 可以在光標所在行的行末之後插入文本。
- 輸入大寫的 R 將進入替換模式,直至按 鍵退出替換模式而進入正常模式。
- 輸入 :set xxx 可以設置 xxx 選項。
第七講︰在線幫助命令
使用在線幫助系統
Vim 擁有一個細致全面的在線幫助系統。要啟動該幫助系統,請選擇如下三種方法之一︰
- 按下 鍵 (如果鍵盤上有的話)
- 按下 鍵 (如果鍵盤上有的話)
- 輸入 :help <回車>
輸入 :q <回車> 可以關閉幫助窗口。
提供一個正確的參數給":help"命令,您可以找到關于該主題的幫助。請試驗以下參數(可別忘了按回車鍵哦。:)︰
- :help w <回車>
- :help c_<T <回車>
- :help insert-index <回車>
- :help user-manual <回車>
第八講︰創建一個啟動腳本
啟用vim的功能
Vim的功能特性要比vi多得多,但大部分功能都沒有缺省激活。為了啟動更多的功能,您得創建一個vimrc文件。
- 開始編輯vimrc文件,這取決于您所使用的操作系統︰
:edit ~/.vimrc 這是Unix系統所使用的命令
:edit $VIM/_vimrc 這是Windows系統所使用的命令
- 接著導入vimrc范例文件︰
::read $VIMRUNTIME/vimrc_example.vim(read 可以简称为 :r,前面说过这个命令了)
- 保存文件,命令為︰
:write(可以简称为 :w,也是说过的)。
在下次您啟動vim的時候,編輯器就會有了語法高亮的功能。您可以繼續把您喜
歡的其它功能設置添加到這個vimrc文件中。
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 Minese的Michael C. Pierce、Robert K.
Ware 所編寫的,其中來自Colorado State University的Charles Smith提供了很多創意。編者通信地址是︰[email protected]