1. 程式人生 > 其它 >Vim 簡明教程

Vim 簡明教程

VIM 基礎教程

目錄

前言

最難的不是如何學習 VIM,而是一直使用 VIM。

儘管網上有非常多的 VIM 教程,大多數教程要麼是過於直白、要麼是過於基礎。從這篇文章中你可以學習到 VIM 的操作邏輯,使用 VIM 實現你現在使用的編輯器的編輯技巧。當然,最好的文件還是 VIM 的幫助文件,如果有耐心看的話,可以把它當成一個字典或者百科全書。

VIM 配置

這篇文章不會詳細介紹 VIM 如何配置,但是有一些重要配置可以提高編輯體驗,有必要介紹一下。安裝好 VIM 之後,VIM 的配置檔案位置:

vim ~/.vimrc

下面是一些推薦配置:

  • 重對映 ESC 按鍵:ESC 用來退出編輯模式,但是位於鍵盤邊緣,不太容易按。所以可以輸入 jk 代替 ESC。

    inoremap jk <ESC>
    
  • 修改 Leader Key

    Leader Key 用來觸發快捷鍵。預設的 Leader Key 是 \,不太容易按。而 ' 就在小拇指右邊。

    let mapleader = "'"
    

有了上面兩個配置,手基本上不會離開鍵盤太遠。

下面是一些特別推薦的配置:

syntax on # highlight syntax
set number # show line number
set noswapfile # disable the swapfile
set hlsearch # highlight the search
set ignorecase # ignore case in search
set incsearch # show search results as you type
  • 重對映 CAPSLOCK:這不是 VIM 的配置,CAPSLOCK 可以說是鍵盤上最沒用的按鍵,建議對映為 ESC 或者 Ctrl。這個對映可以在作業系統層面上實現。

  • 外掛管理:建議儘量保持原有的外掛管理,不要使用第三方外掛管理器。在 VIM 8.x 版本上,外掛管理非常簡單,只需要把外掛複製到下面的資料夾即可:

    ~/.vim/pack/{外掛資料夾名字,可以隨意取}/start/{外掛名字}
    

VIM 的語言

使用 VIM 的方式思考會大幅提高你的編輯效率。VIM 就像一門語言,包括名詞、動詞、形容詞/副詞。這些術語在 VIM 的技術實現上不是準確的,但是可以幫助理解 VIM 的操作邏輯。

動詞

動詞就是要採取的動作,可以作用於名字上。比如:

  • d: delete,刪除
  • c: change,修改
  • y: yank,複製
  • v: visual,視覺化選擇(V 選擇行,v 選擇字元)

形容詞/副詞

這類詞解釋應該按什麼方式完成動作。比如:

  • i: inside,內部
  • a: around,周圍
  • NUM: 數字
  • t: 搜尋目標,在目標前面停止
  • f: 搜尋目標,在目標上面停止
  • /: 查詢字串(正則)

名詞

名詞就是要作用的物件,比如:

  • w: word,單詞
  • s: sentence,句子
  • ): sentence,另外一種方式
  • p: paragraph,段落
  • },paragraph,另外一種方式
  • t,tag,標籤(HTML或者XML)
  • b: block,程式碼塊

名字用作動詞

名字也可以用作動詞,可以用於以某個單位移動游標。

生成句子

組合動詞、形容詞/副詞、名字可以生成一個合法的句子。比如:

刪除兩個單詞

d2w

在句子內部修改(刪除當前句子並且進入插入模式)

cis

複製所在的段落

yip

修改直到下一個尖括號(刪除直到下一個尖括號,並且進入插入模式)

ct<

這裡 to 的目標是 < ,實際上可以是任何元素,比如 yt., dt. 等等。

開始使用 VIM

VIM 編輯檔案的基礎操作:

  • vim file: 使用 vim 開啟 file
  • :w: 儲存修改
  • :q!: 退出 vim,不儲存修改
  • :wq: 儲存修改並退出
  • :saveas ~/somepath: 在指定目錄儲存檔案
  • ZZ,等價於 :wq

在文字中搜索

字串搜尋

使用 / 可以進行搜尋,輸入想要搜尋的內容然後按下回車。

搜尋 include

/include

一旦搜尋完畢,使用 n 跳轉到下一個搜尋結果,使用 N 跳轉到上一個搜尋結果。可以使用 ? 從反向查詢字串。

跳轉到指定字元

跳轉到下一個 < 上

f<

跳轉到下一個 < 的前面

t<

修改直到下一個,

ct,

搜尋總結

  • /{string},搜尋指定字串
  • t, 跳轉到某個字元前
  • f,跳轉到某個字元上
  • *****,搜尋當前位置的單詞
  • n,字串搜尋中,跳轉到下一個
  • N,字串搜尋中,跳轉到上一個
  • ;,字元搜尋中,跳轉到下一個
  • ,,字元搜尋中,跳轉到上一個

移動游標

  • j,向下移動
  • k,向上移動
  • h,向左移動
  • l,向右移動

需要多加練習,剛開始不是很習慣。

行內移動

  • 0,移動到行首
  • $,移動到行尾
  • ^,移動到第一個非空白字元
  • t",移動到下一個 " 前
  • f",移動到下一個 " 上

以單詞為單位移動

  • w,移動一個單詞
  • b,向後一個一個單詞
  • e,移動到單詞末尾

大寫指令會忽略掉某些字元分隔符。

  • W,移動一個單詞,忽略分隔符
  • B,前後移動一個單詞,忽略分隔符

在段落間移動

  • ),移動一個句子
  • },移動一個段落

移動螢幕

  • H,移動到螢幕頂端
  • M,移動到螢幕中間
  • L,移動到螢幕底部
  • gg,移動到檔案頂部
  • G,移動到檔案底部
  • ^U,向上移動半個螢幕
  • ^D,向下移動半個螢幕
  • ^F,向上翻頁
  • ^B,向下翻頁

來回跳轉

  • Ctrl+i,跳轉到前一個位置
  • Ctrl+o,跳轉到後一個位置

其他動作

  • :line_number,跳轉到指定行
  • ^E,向上滾動一行
  • ^Y,向下滾動一行

修改文字

現在開始使用 VIM 進行編輯。

VIM 模式

  • 正常模式:一開始就處於正常模式。正常模式又叫做命令模式,通常用來輸入命令。
  • 插入模式:修改文字的模式,有很多從正常模式切換到插入模式的方法。
  • 視覺化模式:選擇文字的一種模式,與正常模式相似,只不過游標的移動會選中文字。視覺化模式的目的是可以在選中的文字上執行命令,非常方便。
  • 擴充套件模式:從底部輸入 : ,可以執行很多功能強大的命令。

基礎修改/插入選項

修改文字的方式有 修改(c)插入(i)附加(a)

  • i,insert,在游標之前插入
  • a,append,在游標之後插入
  • I,在行首插入
  • A,在行尾插入
  • o,在下一行插入新行
  • O,在上一行插入新行
  • r,替換游標位置的字元
  • R,替換游標位置的字元,但是保持繼續輸入狀態
  • cm,比如 cw,cs,cp

// TODO
挖坑,以後再填