Linux 工具系列——Vim 從入門到深愛之路(1)

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的切換模式如下圖:

i
:
v
Esc
Esc
Esc
普通模式
插入模式
命令行模式
可視模式

Esc是一個特殊的鍵,它會把編輯器從任意狀態切換會默認的普通模式。除了ESC以外,我們還可以通過Ctrl-[Ctrl-cCtrl-\ + Ctrl-n來把模式切換到普通模式。但是這並不能說Ctrl-cCtrl-\ + 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的十八般武藝。
我們下次再見。

參考文獻

  1. http://vimdoc.sourceforge.net/htmldoc/help.html
  2. https://zhuanlan.zhihu.com/p/111585391
  3. https://www.runoob.com/linux/linux-vim.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章