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