vim 入坑指南

我的站點: 桃園

0. 前言

0.1 簡介

vim 被譽爲『編輯器之神』,與之同時代的 emacs 被譽爲『神之編輯器』。能夠看得出 vim 在編輯器的地位是很高的,得益於 vim 的指法,敲起代碼來如行雲流水。特別膜拜創始人創始出這麼方便的敲代碼的指法,這篇文章就是來帶你入坑 vim 指法操做。前端

0.2 前端的我爲何要學習 vim

在當今前端開發工具百花齊放的時代(VS Code、Sublime、Atom 以及 IDE Webstorm),我爲何還要介紹 20 多年前開發的一個老古董呢?在這裏我想說的是出身雖然老,可是所帶來的價值並無減,一旦習慣了 vim 的指法以後,你會以爲不用 vim 操做寫代碼會以爲很不習慣,甚至不知道怎麼操做。然而用在支持 vim 指法的編輯上寫代碼你會以爲如行雲流水,若是再配個機械鍵盤,簡直是享受,特別符合極客的風格。正則表達式

一旦學會了 vim 的指法,會讓你終身受益,至少在你敲代碼的年代會收益,毫無誇張, 它會讓你擺脫煩人的,在敲代碼的時候頻繁的移動鼠標,這也是 vim 的設計理念之一 -- 脫離鼠標。vim

0.3 文章適用讀者

本篇文章比較適合前端開發者,由於我也只是用 vim 在前端領域作過一些開發,其餘領域我沒有發言權。微信

0.4 Q&A

Q:你推薦 vim 是要咱們徹底放棄之前的編輯器而投入 vim 的懷抱嗎?app

A:固然不是。首先 vim 的學習成本仍是很高的,由於他跟平時咱們用的編輯器敲代碼的方式根本不一樣,由於它是不用鼠標的,純鍵盤操做。你想一想若是你在你的 vs code 上不用鼠標操做,你上下左右全靠方向鍵,那敲代碼的速度得有多慢。並且初學者想把 vim 打形成一個本身的 IDE 仍是頗有難度的。因此我這裏推薦的是,不論是你的 vs code、sublime等,裝一個 vim 插件。我在 vs code 上試過,很爽,只不過如今投身到 emacs 的懷抱了。編輯器

雖然我用 emacs 了,我仍是會裝 vim 插件(Evil)。若是有興趣,下次能夠推薦一下 spacemacs 。

開題說了這麼多,就是想吸引一下你們,以爲 vim 的指法是值得去學習的,接下來進入正題。工具

1 助記符

vim 上的全部定義的快捷鍵都是有必定的意義的,在這裏我先把經常使用的一些列出來。學習

1.1 正則表達式相關

  • $ : 移動光標到行尾
  • ^ : 移動光標到當前行的第一個字母位置。

1.2 移動類(motion)

h(左)、l(右)、j(上)、k(下)、f(front)、b(back)、u(up)開發工具

1.3 操做類(operator)

d(delete)、i(insert)、a(append)、c(change)、y(copy)、p(paste)spa

1.4 通常的縮寫

w(word)、s(sentence)

2 理解 vim 中三種經常使用模式

vim 裏面有好幾種模式,可是由於我這裏介紹的是在目前的編輯器裏面裝 插件,因此像命令模式這種用來保存文件、退出文件的就不介紹了。

  1. Nomal mode(默認模式,由於使用該模式場景最多,全部定爲默認模式)。
  2. Insert mode (插入模式--少用,用了它 vim 就成 「啞吧」了)。
  3. Visual mode(可視模式,取名叫光標模式或者選擇模式可能還比較好理解)

2.1 三種模式之間的轉換關係

圖片來源參考文章

3 教程篇

當咱們記住上面的助記符以後,咱們就能夠像寫英文短語同樣操做了。

vim 快捷鍵語法:operator[motion],例如 刪兩個單詞就是
d2w,operator 和 motion 我已經在前面給出來一些了。

3.1 移動光標

3.1.1 最基本的 h、j、k、l

最基本的上下左右移動(跟鍵盤上下左右的鍵盤效果相同,可是每每方向鍵在鍵盤的右下方,離主鍵盤區較遠,這個也相對比較有優點):

  • h:光標向左移動
  • j:光標向下移動
  • k:光標向上移動
  • l:光標向右移動

移動屬於 motion,因此在前面加上「count」就能夠移動多行了,好比向上移動 10 行,就能夠 10k。每每編輯器會有行號,定位須要作個加減法,若是採用的是相對行號,用這個就比較方便。不懂相對行號的同窗看下圖就懂了。
相對行號

3.1.2 快速移動

w:光標往前移動一個詞
b:光標向後移動一個詞
0:移動光標到當前行首
^:移動光標到當前行的第一個字母位置(注意與 0 的區別)
$:移動光標到行尾
fx:移動光標到當前行的下一個 x 處(x爲任意字母)
tx:和上面一個命令相似,移動到 x 的左邊一個位置
):移動光標到下一個句子
( :移動光標到上一個句子
{:移動光標到上一段
}:移動光標到下一段

3.1.3 快速定位

在剛纔介紹了經過相對行號來進行移動到行的光標,還有采用絕對定位來移動的。那就是 gg。
語法: [num]gg

  • 2gg : 光標移動到第 2 行
  • gg: 光標移動到文件首部
  • G:移動到文件胃部
  • H:移動到屏幕上面
  • M:移動到屏幕中間
  • L:移動到屏幕下面

書籤功能:這個功能也是很方便,不多有編輯器有的功能,單獨列出來說,強烈推薦。

  • m<x>:給當前行加入書籤,x 爲任意字母(m 是 mark )
  • ` <x>: 單引號加上剛纔 m 以後的字母,就會調整到剛纔標記的那一行

3.1.3 屏幕滾動

Ctrl + b:向上移動一屏(Foward首字母小寫)
Ctrl + f:向下移動一屏(Backward首字母小寫)
Ctrl + d:向下滾動半屏內容(Down首字母小寫)
Ctrl + u:向上滾動半屏內容(Up首字母小寫)

3.2 剪切、複製、粘貼

  • d[n]w:剪切後面 n 個單詞的內容,dw 是剪切當前單詞
  • [n]dd:剪切n行的內容, dd 爲剪切當前行
  • D:剪切光標後到行尾的內容
  • yy/Y:複製當前行的內容
  • p:粘貼到光標後
  • P:粘貼到光標前

在 normal 模式下是沒有刪除操做的,d 這種刪除也是剪切。

以上全是 normal 模式

3.3 編輯模式

在前面也說了,進入編輯模式也就變成了「啞吧」vim 了,就跟通常的編輯器沒什麼區別了。不少人就知道用 i 能夠進入,還有不少命令可讓你聰明的進入。

  • i:在光標處插入(insert首字母小寫)
  • I:在行首插入(insert首字母大寫)
  • a:在光標處後一個字符插入(append首字母小寫)
  • A:在行尾插入(append首字母大寫)
  • o:在上一行插入
  • O:在下一行插入
  • s:清除當前字符並進入插入模式
  • cc/S:清除當前行並進入插入模式
  • cw: 清除當前單詞並進入插入模式

3.4 可視模式

要是前面都學會了,可視模式就比較簡單了,並且你將會常常用到這個模式。我會把這個模式稱作「選擇模式」,接下來咱們就來探索一下是若是選擇的。

其實也就兩個關鍵的點:v(字符選擇)、V(行選擇)

3.4.1 v(小寫 v)

在 normal 模式下,按一下 v,而後能夠按 l,重複按 l,你會發現右邊的在一直被選中(高亮的部分)。一樣的操做,按了 v,而後再練習一下按 h、j、k。

選中的目的是什麼呢?就是爲了進行一些編輯操做,好比刪除 d (實質是剪切)、複製 y。

小提示,經常選中以後用 c 也是比較好的選擇哦,剪切並進入插入模式。

3.4.2 V(大寫 V)

V 就是選中行,也很簡單。按了 V 以後,而後按 j、k,就能夠上下選擇行了,而後一次性刪除 d、複製 y,就比較方便。

3.5 組合操做

這個功能就比較強悍了,很適用,強烈推薦。
先來記公式:operator + i|a + scope

operator 就是咱們前面提到的插入(c)、剪切(d)、複製(y)以及選擇(v),i 表示 scope 範圍內,a 表示包含 scope 標籤,scope 就是操做的範圍了。

實例:
如下若是將 i 換成 a,則會將符號也包含進去
vib(選中小括號內的內容)
viB(選中大括號內的內容)
vi"(選中雙引號內的內容)
vi'(選中單引號內的內容)
vi<(選中尖括號內的內容)

3.6 撤回、查找、替換

u: 撤回上次操做(效果跟 command + z 效果同樣)
/|?xxx:表示在整篇文檔中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找.其中xxx能夠是正規表達式。查找到之後, 再輸入 n 查找下一個匹配處, 輸入 N 反方向查找.
:%s/original/replacement:檢索第一個 「original」 字符串並將其替換成 「replacement」
:%s/original/replacement/g: 檢索並將全部的 「original」 替換爲 「replacement」
:%s/original/replacement/gc:檢索出全部的 「original」 字符串,但在替換成 「replacement」 前,先詢問是否替換

這些操做通常編輯器都自帶有很好的快捷鍵,記不住也沒啥。

4 結束語

我寫這篇文章的目的不是爲了總結什麼知識點(其實當你 vim 用熟了,這些命令徹底造成肌肉記憶了,根本不用記下來),或者說想發篇文章之類的,僅僅是想給 vim 作一個宣傳,讓更多的人接觸 vim,讓更多的開發者在開發上效率更高。若是你以爲這篇文章對你有幫助,請轉發給更多的人讓他們都瞭解瞭解。

最後想提醒的就是,對於這些快捷鍵,死記是很難記完的,根據我總結的一些語義話的方式去記,有公式的記公式,可能要快一點,而後就是多實踐,敲多了本身就記住了。我剛開始學的時候,還不知道有那些助記符,基本徹底靠死記硬背,我就是用一張紙,而後把命令手寫抄到紙上,放在個人電腦旁,忘了就立刻拿來看看,別說,效果還挺好的。

祝大家好運!

你們好,我是桃翁,我爲本身代言!

我的微信公衆號,之後儘可能堅持每週一篇乾貨
我的微信公衆號

參考文章:
VIM 百度百科
如何用Vim提升開發效率

相關文章
相關標籤/搜索