OS version: Ubuntu 18.04 LTS
Vim version: 8.0.1453
Vim
VI = Visual editor(可視化編輯器),VI 採用了Visual 的頭2個母進行縮寫。
VIM 編輯器是VI編輯器的增強版 (improved版)。VIM 是 Visual editor improved 的縮寫。
Vim的優點
說到Vim,一般來說很難掌握,學習成本也很高。因爲Vim有模式的概念,而功能又非常豐富,所以比起學習成本等缺點,高效的移動,高效的輸入等絕對優勢還是很值得我們花時間去學習它。簡單總結筆者認爲Vim的優點有以下4點:
- 因爲有不同的模式,所以操作性和功能性的比較的豐富
- 可以通過操作符、動作命令、文字對象和重複功能進行快速編輯
- 可以通過插件來拓展功能
- 有詳盡的幫助文檔
關於模式
Vim主要有以下模式。
當然,還有選擇模式和Ex模式等其他模式,不過在初學的時候,不知道也不要緊。
模式(mode) | 常用功能 |
---|---|
普通模式(normal mode) | 光標移動、拷貝、粘貼、刪除等 |
插入模式(insert mode) | 輸入、粘貼、輸入補全、詞語刪除等 |
可視模式(visual mode) | 區域選擇、複製、刪除、過濾等 |
命令行模式(command line mode) | 寫入、退出、文本查找替換等 |
切換模式
Vim的切換模式如下圖:
Esc
是一個特殊的鍵,它會把編輯器從任意狀態切換會默認的普通模式。除了ESC
以外,我們還可以通過Ctrl-[
、Ctrl-c
、Ctrl-\ + Ctrl-n
來把模式切換到普通模式。但是這並不能說Ctrl-c
和Ctrl-\ + Ctrl-n
就是跟Esc
等價的,具體在那些方面是不一樣的,我們下次再說明。
當前模式 | 切換模式 | 鍵位 |
---|---|---|
普通模式 | 挿入 | i、I、a、A、o、O |
命令行模式 | :、/、? | |
可視模式 | v、V、Ctrl-v |
關於操作、動作、文字對象、重複
筆者認爲,在Vim中有以下幾種非常重要的功能:
-
操作符(operator)The operators that can be used are
操作符:指修改(c)、刪除(d)、拷貝(y)等操作。 -
動作(motion):Vim documentation: motion
動作:指光標的移動或者定義操作的範圍。
比如,如果需要刪除光標位置到行尾的文本,因爲刪除的操作符是d
,移動到行尾的動作是$
,組合起來就是d$
。 -
文字對象(text object)The objects that can be used are
文字對象:指操作的對象元素。文字對象只能用在操作符或者選擇模式之後。
比如,在文字對象 **iw
** 中,與作爲刪除操作符的d
進行組合,只需輸diw
就可以刪除一個單詞。 -
重複(repeat)
重複:指單詞重複更改。這裏所指的修改是指修改文本。
比如,刪除一個單詞後,只需輸入.
就可以反覆執行更改diw
。重複是強有力的功能,可以減少重複的勞動,所以要積極的使用。
習慣並熟練使用Vim常常需要花一些時間和經歷。不過以筆者經歷告訴大家,這是值得的。當你習得這一項本領之後,它能夠幫助你高效快速的編輯文本或者代碼文件,減少不必要的重複工作和鍵盤移動。
關於幫助
http://vimdoc.sourceforge.net/htmldoc/help.html
Vim有非常強大的幫助文檔,這個幫助文檔幾乎網羅了所有的功能說明。如果想知道操作符有哪些,那麼只需要在命令行,也就底線命令行裏輸入:h operator
就可以呼出相關幫助。
正則查找全文幫助
可以使用命令helpg {pattern}或者helpgrep {pattern}
查找所有的幫助文檔,匹配的結果以列表的形式表示出來,默認選中第一個匹配結果。比如,:helpg normal mode
,詳細說明請參照:help helpgrep
說明。
從上圖我們發現只顯示了一條匹配項,vim提供了quickfix窗口,在執行vimgrep之類的命令後,結果會顯示在quickfix窗口,運行:cw
命令即可呼出此窗口。
與quickfix的指令有:
命令 | 說明 |
---|---|
:cw | 如果有信息列表,則打開quickfix窗口;否則什麼也不做 |
:cl | 列出所有信息 |
:cc | 顯示詳細信息 |
:cp | 跳到上一項 |
:cn | 跳到下一項 |
:copen | 打開quickfix窗口,可添加窗口高度參數,單位爲行 |
:cclose | 關閉quickfix窗口 |
:cold[er] | 到前一箇舊列表 |
:cnew | 到後一個新列表 |
安裝中文幫助文檔
接下來說明如何安裝Vim的中文幫助文檔,雖然筆者建議大家熟悉英文的操作環境,在英文環境下編寫文檔和代碼。
(1)在瀏覽器中輸入一下網址,準備語言包下載:
http://vimcdoc.sourceforge.net/
(2)選擇“Latest platform independent tarball,including an Linux/BSD installation script”下載。
(3)將命令行切換到下載文件的目錄。
cd Downloads/
tar -xf vimcdoc-2.3.0.tar.gz
cd vimcdoc-2.3.0/
source vimcdoc.sh -i
(4)切換語言
在控制檯輸入以下命令,完成語言的切換。
# 將vim幫助文檔的語言切換到中文
vim set helplang=cn
# 將vim幫助文檔的語言切換到默認的英文
# vim set helplang=en
(5)驗證更改
再次打開Vim在命令行輸入:h operator
,可以發現已經變成親切的中文說明。
幫助文檔學習建議
Vim的幫助文檔的內容非常的多,從什麼地方開始學習比較好呢,是很多Vim的使用者想問的。下面是推薦的幫助文檔列表供大家參考。
如果您從未使用過Vim,那麼筆者建議您從index
開始讀起。
Help | Summary |
---|---|
helphelp | 幫助文件之幫助 |
vim-modes | 模式介紹 |
index | 各個模式下所有命令的一個完整列表 |
quickref | 快速參考指南 |
ex-cmd-index | Vim的Ex命令列表 |
function-list | 按用途分類的內建函數列表 |
option-list | 選項列表 |
map-overview | 映射命令與模式的對應表 |
usr_41 | Vim 腳本語言的相關知識 |
eval | Vim 腳本語言的表達式求值 |
Vim的基本操作
上面大致對Vim做了簡單的介紹,如果要真正意義上能夠使用Vim,下面的必要操作是需要您熟記的。
光標移動(normal mode)
Vim啓動以後是普通模式,那麼我們從普通模式開始,學習並掌握光標的移動。
當然您也可以學習Vim的入門課程,在Linux命令中輸入vimtutor
進入練習模式。
h
:向左移動j
:向下移動k
:向上移動l
:向右移動gg
:移動到文件開頭G
:移動到文件末尾{count}G
:移動到指定行、例:11G
插入模式(insert mode)
i
:移動到在光標前,啓動插入模式I
:移動到本行第一個非空白字符之前,啓動插入模式a
:光標向右移動一文字,啓動插入模式A
: 光標移動到行尾,啓動插入模式o
:在光標下方開啓新行,啓動插入模式O
:在光標上方開啓新行,啓動插入模式
可視模式(visual mode)
可視模式是進行復雜選擇和操作的模式。
在這模式中,可以與操作符組合使用,比如刪除選擇的部分,複製選擇的部分都是可以的。
v
: 進入選擇模式,以文字爲單位V
:進入選擇模式,以行文字爲單位Ctrl-v
:以塊文字爲單位選擇
命令行模式(command line mode)
下面介紹最基本的命令行操作,請務必熟記並且多多練習。
(1)保存修改
:w {filename}
把內容寫入到文件{filename}中,文件不存在的場合,則會新建文件。:w
保存修改:sav {filename}
另存爲{filename}
(2)退出Vim
:q
退出Vim:q!
如果有修改:q
不能退出,通過附加!
強制退出:wq
保存修改並退出
(3)查找替換
/{word}
查找{word}:%s/banana/apple/g
用apple替換banana。
最後
今天我們學習了Vim的最基本的一些操作,可以滿足常規工作的需求。
但這還不是Vim的真正厲害之處,我們下次接着講Vim的十八般武藝。
我們下次再見。
參考文獻
- http://vimdoc.sourceforge.net/htmldoc/help.html
- https://zhuanlan.zhihu.com/p/111585391
- https://www.runoob.com/linux/linux-vim.html