還有必要學Vim嗎?

曾經有一段時間,編輯器領域的創新停滯了。在web編程走紅,尤爲是electron出現以後,這個領域又上了一個新臺階。Atom, VsCode等等替代了以前惟一的可是臃腫的跨平臺選擇 - Java。一時之間,你們都開始用網頁來寫代碼了。html

在這樣一個時代,還要學Vim這種中古的技能嗎?我來討論一下爲何要,不但要,並且必需要。git

  1. Vim仍然是最高效的編輯器
  2. Vim仍然在高速進化
  3. Vim是編輯器領域的Javascript

高效

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

  1. 跨平臺
  2. 語法高亮
  3. diff
  4. split
  5. plugin和vimscript....

在大約兩年前,neovim出現了。它主要作了這麼幾件事:編程語言

  1. 將Vim的開發方式帶入21世紀
  2. 加入async方式
  3. 遠程控制

Vim的開發一直都是一個我的秀。當kernel已經從patch遷移到CVS遷移到bitlocker遷移到git的時候,當sourceforge已經經歷了諾基亞式的巔峯到谷底的時候,Bram還基本停留在N年前的模式。固然,Vim首先是一個我的項目,不管怎麼作都不過度。但單從技術進步的角度來說,這確實是逆潮流的。編輯器

async看來是一件小事,可是卻從根本上移除了用戶體驗的絆腳石。neovim出現以後,包括ALE等等在內的各類創新涌現了出來。甚至Vim8也不上了這個缺口。這個領域發展的速度一會兒從步行編程了摩托車,出來一兩個偉大的產品一點也不出奇。

遠程控制用一種叫作msgpack的IPC將編輯核心和UI完全分割了。方便了UI編寫者。其中一個使人振奮的就是和VsCode的集成

寫這篇文章的時候,恰逢neovim最新的newsletter發出。有興趣的能夠戳這裏看看。

Javascript

我在拿編程語言和一個編輯器作比較嗎?我喝多了?

如今流行,甚至不怎麼流行的編輯器或IDE,都支持插件。而在這些插件裏面,總有一個插件是不會缺席的,那就是Vim。JetBrain有IdeaVimVsCode有,Atom有,Sublime有,Chrome, Firefox也有,連Office都有,還收費! 這裏面有一個邏輯,不是由於Vim很流行,而是Vim有意無心地創造了一種編輯的語言。好比dw,yy, g, gg等等。這些快捷的命令在熟悉以後,再也不是簡單的命令而已,而成爲能夠組合的元素。你不會在思考用什麼樣的命令,而任由你的指頭自行在鍵盤上跳動,進行它本身的編程。

學會了Vim以後,不管什麼IDE,不管在什麼平臺上,都無需再學習另一套鍵盤快捷。可謂一勞永逸。例如如今如日中天的VsCode,有很是多的快捷鍵,並且每一個平臺各有不一樣。可是隻用安裝一個Vim插件,這些快捷鍵都不用學了。

之因此和Javascript比,是由於:幾乎全部的語言均可以transpile成Javascript; 幾乎全部的編輯器和IDE,都支持Vim插件。

人生苦短,快學Vim!

相關文章
相關標籤/搜索