曾經有一段時間,編輯器領域的創新停滯了。在web編程走紅,尤爲是electron出現以後,這個領域又上了一個新臺階。Atom, VsCode等等替代了以前惟一的可是臃腫的跨平臺選擇 - Java。一時之間,你們都開始用網頁來寫代碼了。html
在這樣一個時代,還要學Vim這種中古的技能嗎?我來討論一下爲何要,不但要,並且必需要。git
Vim的學習曲線是出了名的高。可是這背後是高投入,高產出的效率。github
隨便舉幾個例子:dd
刪除一行,兩個鍵搞定。普通的編輯器可能要<HOME><Shift-End><Del><Del>
這樣的組合才能搞定。w
能夠跳過一個單詞,普通的編輯器要<Ctrl-Right>
才能夠搞定。一半的按鍵,還不包括遠離中原的Ctrl
鍵。mM
記住一個位置,'M
隨時跳轉到該位置。通常的編輯器...說實在的我並不知道通常的編輯器如何作相似的操做。在VsCode的菜單裏掃了兩邊也沒找到。web
這只是九牛一毛。並且用的時間越久,你積累的技巧就越多,你的效率就越高。編程
高效的另一面是:反應快。其實要說功能強大,JetBrain的產品無疑都很牛。可是在大腦高速運轉的時候,思惟到屏幕上字符的轉化過程減小2-300毫秒致使體驗的差異是巨大的。就好像。。。。vim
其實Vim的高效很大程度上應該歸功於所謂模式編輯 - Vim於大多數編輯器不一樣,有insert,
normal,
visual等等幾個模式。這也是形成它學習成本高,被人吐槽多的緣由。最近網上瘋傳的段子就是「如何退出Vim」。各類歡快的圖片層出不窮。這裏忍不住貼一個瘋狂的圖片。若是你看到這個圖片決定不學Vim了,那是你的損失。反正我以爲這酷畢了。electron
Vim 從Vi進化而來,爲一個略顯骨感的編輯引擎加入了諸多特性:async
在大約兩年前,neovim出現了。它主要作了這麼幾件事:編程語言
Vim的開發一直都是一個我的秀。當kernel已經從patch遷移到CVS遷移到bitlocker遷移到git的時候,當sourceforge已經經歷了諾基亞式的巔峯到谷底的時候,Bram還基本停留在N年前的模式。固然,Vim首先是一個我的項目,不管怎麼作都不過度。但單從技術進步的角度來說,這確實是逆潮流的。編輯器
async看來是一件小事,可是卻從根本上移除了用戶體驗的絆腳石。neovim出現以後,包括ALE等等在內的各類創新涌現了出來。甚至Vim8也不上了這個缺口。這個領域發展的速度一會兒從步行編程了摩托車,出來一兩個偉大的產品一點也不出奇。
遠程控制用一種叫作msgpack的IPC將編輯核心和UI完全分割了。方便了UI編寫者。其中一個使人振奮的就是和VsCode的集成。
寫這篇文章的時候,恰逢neovim最新的newsletter發出。有興趣的能夠戳這裏看看。
我在拿編程語言和一個編輯器作比較嗎?我喝多了?
如今流行,甚至不怎麼流行的編輯器或IDE,都支持插件。而在這些插件裏面,總有一個插件是不會缺席的,那就是Vim。JetBrain有IdeaVim,VsCode有,Atom有,Sublime有,Chrome, Firefox也有,連Office都有,還收費! 這裏面有一個邏輯,不是由於Vim很流行,而是Vim有意無心地創造了一種編輯的語言。好比dw,yy, g, gg
等等。這些快捷的命令在熟悉以後,再也不是簡單的命令而已,而成爲能夠組合的元素。你不會在思考用什麼樣的命令,而任由你的指頭自行在鍵盤上跳動,進行它本身的編程。
學會了Vim以後,不管什麼IDE,不管在什麼平臺上,都無需再學習另一套鍵盤快捷。可謂一勞永逸。例如如今如日中天的VsCode,有很是多的快捷鍵,並且每一個平臺各有不一樣。可是隻用安裝一個Vim插件,這些快捷鍵都不用學了。
之因此和Javascript比,是由於:幾乎全部的語言均可以transpile成Javascript; 幾乎全部的編輯器和IDE,都支持Vim插件。
人生苦短,快學Vim!