我的站點: 桃園
vim 被譽爲『編輯器之神』,與之同時代的 emacs 被譽爲『神之編輯器』。能夠看得出 vim 在編輯器的地位是很高的,得益於 vim 的指法,敲起代碼來如行雲流水。特別膜拜創始人創始出這麼方便的敲代碼的指法,這篇文章就是來帶你入坑 vim 指法操做。前端
在當今前端開發工具百花齊放的時代(VS Code、Sublime、Atom 以及 IDE Webstorm),我爲何還要介紹 20 多年前開發的一個老古董呢?在這裏我想說的是出身雖然老,可是所帶來的價值並無減,一旦習慣了 vim 的指法以後,你會以爲不用 vim 操做寫代碼會以爲很不習慣,甚至不知道怎麼操做。然而用在支持 vim 指法的編輯上寫代碼你會以爲如行雲流水,若是再配個機械鍵盤,簡直是享受,特別符合極客的風格。正則表達式
一旦學會了 vim 的指法,會讓你終身受益,至少在你敲代碼的年代會收益,毫無誇張, 它會讓你擺脫煩人的,在敲代碼的時候頻繁的移動鼠標,這也是 vim 的設計理念之一 -- 脫離鼠標。vim
本篇文章比較適合前端開發者,由於我也只是用 vim 在前端領域作過一些開發,其餘領域我沒有發言權。微信
Q:你推薦 vim 是要咱們徹底放棄之前的編輯器而投入 vim 的懷抱嗎?app
A:固然不是。首先 vim 的學習成本仍是很高的,由於他跟平時咱們用的編輯器敲代碼的方式根本不一樣,由於它是不用鼠標的,純鍵盤操做。你想一想若是你在你的 vs code 上不用鼠標操做,你上下左右全靠方向鍵,那敲代碼的速度得有多慢。並且初學者想把 vim 打形成一個本身的 IDE 仍是頗有難度的。因此我這裏推薦的是,不論是你的 vs code、sublime等,裝一個 vim 插件。我在 vs code 上試過,很爽,只不過如今投身到 emacs 的懷抱了。編輯器
雖然我用 emacs 了,我仍是會裝 vim 插件(Evil)。若是有興趣,下次能夠推薦一下 spacemacs 。
開題說了這麼多,就是想吸引一下你們,以爲 vim 的指法是值得去學習的,接下來進入正題。工具
vim 上的全部定義的快捷鍵都是有必定的意義的,在這裏我先把經常使用的一些列出來。學習
h(左)、l(右)、j(上)、k(下)、f(front)、b(back)、u(up)開發工具
d(delete)、i(insert)、a(append)、c(change)、y(copy)、p(paste)spa
w(word)、s(sentence)
vim 裏面有好幾種模式,可是由於我這裏介紹的是在目前的編輯器裏面裝 插件,因此像命令模式這種用來保存文件、退出文件的就不介紹了。
當咱們記住上面的助記符以後,咱們就能夠像寫英文短語同樣操做了。
vim 快捷鍵語法:operator[motion],例如 刪兩個單詞就是
d2w,operator 和 motion 我已經在前面給出來一些了。
最基本的上下左右移動(跟鍵盤上下左右的鍵盤效果相同,可是每每方向鍵在鍵盤的右下方,離主鍵盤區較遠,這個也相對比較有優點):
移動屬於 motion,因此在前面加上「count」就能夠移動多行了,好比向上移動 10 行,就能夠 10k。每每編輯器會有行號,定位須要作個加減法,若是採用的是相對行號,用這個就比較方便。不懂相對行號的同窗看下圖就懂了。
w:光標往前移動一個詞
b:光標向後移動一個詞
0:移動光標到當前行首
^:移動光標到當前行的第一個字母位置(注意與 0 的區別)
$:移動光標到行尾
fx:移動光標到當前行的下一個 x 處(x爲任意字母)
tx:和上面一個命令相似,移動到 x 的左邊一個位置
):移動光標到下一個句子
( :移動光標到上一個句子
{:移動光標到上一段
}:移動光標到下一段
在剛纔介紹了經過相對行號來進行移動到行的光標,還有采用絕對定位來移動的。那就是 gg。
語法: [num]gg
書籤功能:這個功能也是很方便,不多有編輯器有的功能,單獨列出來說,強烈推薦。
Ctrl + b:向上移動一屏(Foward首字母小寫)
Ctrl + f:向下移動一屏(Backward首字母小寫)
Ctrl + d:向下滾動半屏內容(Down首字母小寫)
Ctrl + u:向上滾動半屏內容(Up首字母小寫)
在 normal 模式下是沒有刪除操做的,d 這種刪除也是剪切。
以上全是 normal 模式
在前面也說了,進入編輯模式也就變成了「啞吧」vim 了,就跟通常的編輯器沒什麼區別了。不少人就知道用 i 能夠進入,還有不少命令可讓你聰明的進入。
要是前面都學會了,可視模式就比較簡單了,並且你將會常常用到這個模式。我會把這個模式稱作「選擇模式」,接下來咱們就來探索一下是若是選擇的。
其實也就兩個關鍵的點:v(字符選擇)、V(行選擇)
在 normal 模式下,按一下 v,而後能夠按 l,重複按 l,你會發現右邊的在一直被選中(高亮的部分)。一樣的操做,按了 v,而後再練習一下按 h、j、k。
選中的目的是什麼呢?就是爲了進行一些編輯操做,好比刪除 d (實質是剪切)、複製 y。
小提示,經常選中以後用 c 也是比較好的選擇哦,剪切並進入插入模式。
V 就是選中行,也很簡單。按了 V 以後,而後按 j、k,就能夠上下選擇行了,而後一次性刪除 d、複製 y,就比較方便。
這個功能就比較強悍了,很適用,強烈推薦。
先來記公式:operator + i|a + scope
operator 就是咱們前面提到的插入(c)、剪切(d)、複製(y)以及選擇(v),i 表示 scope 範圍內,a 表示包含 scope 標籤,scope 就是操做的範圍了。
實例:
如下若是將 i 換成 a,則會將符號也包含進去
vib(選中小括號內的內容)
viB(選中大括號內的內容)
vi"(選中雙引號內的內容)
vi'(選中單引號內的內容)
vi<(選中尖括號內的內容)
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」 前,先詢問是否替換
這些操做通常編輯器都自帶有很好的快捷鍵,記不住也沒啥。
我寫這篇文章的目的不是爲了總結什麼知識點(其實當你 vim 用熟了,這些命令徹底造成肌肉記憶了,根本不用記下來),或者說想發篇文章之類的,僅僅是想給 vim 作一個宣傳,讓更多的人接觸 vim,讓更多的開發者在開發上效率更高。若是你以爲這篇文章對你有幫助,請轉發給更多的人讓他們都瞭解瞭解。
最後想提醒的就是,對於這些快捷鍵,死記是很難記完的,根據我總結的一些語義話的方式去記,有公式的記公式,可能要快一點,而後就是多實踐,敲多了本身就記住了。我剛開始學的時候,還不知道有那些助記符,基本徹底靠死記硬背,我就是用一張紙,而後把命令手寫抄到紙上,放在個人電腦旁,忘了就立刻拿來看看,別說,效果還挺好的。
祝大家好運!
你們好,我是桃翁,我爲本身代言!
我的微信公衆號,之後儘可能堅持每週一篇乾貨
參考文章:
VIM 百度百科
如何用Vim提升開發效率