當(dāng)你看到一些大牛飛快敲擊鍵盤而不用鼠標(biāo)的時候你可能很羨慕和佩服,其實這完全沒有必要。就像一個吉他手熟練地彈吉他有必要羨慕嗎?一個瓦匠熟練地砌磚有必要羨慕嗎?這些都是他們賴以生存的工具而已,熟練地運用工具是理所當(dāng)然的事情。而一個程序員,一個文本編輯者,你如果沒有熟練運用你的編輯工具,其實還是挺不應(yīng)該的,而工具又有優(yōu)劣之分,選對工具很重要。
眾所周知,編輯器有很多,Sublime、Notepad++、EditPlus、Visual Studio Code,以及號稱21世紀(jì)編輯器的Atom,這些編輯器都很好用,用戶基礎(chǔ)都很多,而且可以滿足日常幾乎所有的需求(如果在上面幾個里面選擇的話,VS Code 據(jù)說會是更好的選擇,良心推薦),而vim相對他們一個很突出的特點就是難用,下面是Michael Mrozek畫的一副比較“寫實”的各個編輯器學(xué)習(xí)曲線圖:

地球人都知道,vim是“編輯器之神”,但是想駕馭它可不是簡單的事情,你需要不斷地學(xué)習(xí)然后放棄、再學(xué)習(xí)、再放棄,說的好像很恐怖,其實我我相信你看這篇文章的時候可能已經(jīng)放棄了不止一次了吧:D 所以從現(xiàn)在開始你將真正走入vim的神殿,接近并駕馭它。
好吧,上面提到那么多的編輯器,卻故意把“神之編輯器”——emacs給故意忽略掉了。反正這兩個都很難學(xué),那為啥非得學(xué)vim而不是emacs呢?如果你這么問,那么我會很尷尬,原因是emacs我也只是入門而已,沒法體會她真正的魅力,網(wǎng)上有很多類似的對比,最終的結(jié)果甚至都是偏向于emacs那一方的,說到這里你的心怕是已涼了半截,不用擔(dān)心,網(wǎng)上的評論大多數(shù)都是以偏概全,用一方的優(yōu)點來貶低另一方的“缺點”,比如下面的:
個人覺得Emacs的按鍵也比vim的按鍵設(shè)置的合理,雖然vim的按鍵非常短,但是都是特別難按。比如回到行尾的$,回到第一個非空白字符的^,還有刪除一個單詞dw,試想阿,你如果想刪除一系列單詞怎么辦?難道先要數(shù)數(shù)要刪除多少個單詞?然后用dNw?太慢了。要么就dw,dw,dw,。。。,按N次,這樣就需要按2N次鍵,但是在Emacs下刪除一個單詞是M-d,你只需要按著Alt鍵一直不放,然后不停的按d就可以了,僅需要按N+1次鍵,方便之極。
這是明顯是不懂vim嘛,難按說明打開的方式不對,不能重復(fù)刪除單詞?不知道我vim有牛逼的.命令嗎?(科普:.表示重復(fù)之前的操作) 下面一段話是在StackOverFlow上摘抄下來的,比較客觀,大致的意思是emacs是一種生活方式,需要一天24小時的使用,可以用它來干任何事情,vim則更側(cè)重于是一款優(yōu)秀的編輯器,效率很高。作者用的是emacs,但他認(rèn)為如果你不想陷得太深,vim可能是更好的選擇。
With Emacs you are expected to have it open 24/7 and live inside the program, almost everything you do can be done from there. You write your own extensions, use it for note taking, organisation, games, programming, shell access, file access, listening to music, web browsing. It takes weeks and weeks till you will be happy with it and then you will learn new stuff all the time. You will be annoyed when you don't have access to it and constantly change your config. You won't be able to use other peoples emacs versions easily and it won't just be installed. It uses Lisp, which is great. You can make it into anything you want it to be. (anything, at all)
With vim, it's almost always pre-installed. It's fast. You open up a file do a quick edit and then quit. You can work with the basic setup if you are on someone else's machine. It's not quite so editable; but it's still far better than most text editors. It recognises that most of the time you are reading/editing not typing and makes that portion faster. You don't suffer fromemacs pinkie. It's not so infuriating. It's easier to learn.
Even though I use Emacs all day every day (and love it) unless you intend to spend a lot of time in the program you choose I would pick vim
圣戰(zhàn)已經(jīng)打響幾十年,并將一直持續(xù)下去,其實打口水戰(zhàn)沒必要,兩個都是神,所以兩個存在肯定都是有道理的,更何況emacs其實有個evil模式,可以讓你在emacs上使用vim的快捷操作,從側(cè)面說明vim的編輯方式還是得到了對手的認(rèn)可的,兩者終于找到了和諧共處的方法,如果你哪天真的要叛逃emacs,那你將擁有神之編輯器之神。下面我著重給出點成為vimmer的理由,畢竟我們大多數(shù)小老百姓并不需要去利用編輯器發(fā)郵件發(fā)twitter什么的。
1. 編輯文本效率高
編輯器的作用主要還是去處理文本,處理文本又有快慢之分。文本的操作主要有輸入、光標(biāo)移動、刪除、以及復(fù)制粘貼等,同樣光標(biāo)的移動,vim可以比一般的編輯器快上許多,vim的復(fù)制粘貼功能也強(qiáng)大到足以使你想再次放棄vim的學(xué)習(xí):D,相信我,學(xué)好vim將顯著提升你編碼或者編輯文本的效率。
2.完美配合各家編輯器以及IDE
如果你想把vim打造成c/c++/python甚至java的IDE,完全沒有問題,但是我相信你再怎么配置也不可能超越JetBrain家族的那一套。如果能夠把Android Studio或者Pycharm的快捷鍵配合上vim的高效率編輯豈不是如虎添翼?事實證明這是可行的,ideavim對vim的支持還是很不錯的,而且?guī)缀跛械木庉嬈骰蛘逫DE都有vim插件,你不用擔(dān)心去mac上沒有你心愛的notepad++,也不用擔(dān)心從android轉(zhuǎn)行ios在編輯方式上的巨大改變了,學(xué)會了vim,在不同平臺上,不同編輯器或者IDE里面,一個vim走天下。
3.遠(yuǎn)程編輯
linux系統(tǒng)大部分都內(nèi)置了vi編輯器,這應(yīng)該是為什么大多數(shù)人學(xué)習(xí)vim而不是emacs的原因吧,我想只要搞開發(fā)應(yīng)該是逃不過遠(yuǎn)程訪問一些日志或者修改一些配置參數(shù)什么的,這時候vi的技能就派上用場啦,如果你認(rèn)為只需要知道i和:wq就ok了,那我真的也沒法反駁,畢竟有段時間我就是這么干的,但我想當(dāng)你真的把hjkl弄熟,順便還能流利移動光標(biāo)之后應(yīng)該就不這么想了。
4.擴(kuò)展性強(qiáng),私人訂制功能
vim雖然已經(jīng)很強(qiáng)大,但是部分特殊的需求并不能盡善盡美,如果你有能力的話可以自己學(xué)習(xí)vimscript來自己寫腳本,絕對地私人訂制。當(dāng)然,如果懶得學(xué)vimscript的話,python也是可以的,但是基本的vimscript還是要掌握的。如果你實在懶的不行了,可以去google或者github,你想到的需求沒準(zhǔn)別人已經(jīng)幫你寫好了插件等著你發(fā)現(xiàn)呢。
5.啟動快
這是我認(rèn)為作為編輯器必須具備的一個條件,像Atom啟動速度就很慢,notepad++做的就不錯,可惜只支持windows平臺,vim的啟動速度還是挺快的,用來打開修改一些配置文件以及編輯文本很高效的。另外,據(jù)說emacs啟動沒有vim快,哈哈。
還在等什么呢,是時候好好審視一下這么多年來形成的打字習(xí)慣了,稍微深入了解一下vim,你會發(fā)現(xiàn)以前的碼字有多么大的提升空間。下面我將陸續(xù)跟大家分享一些vim的學(xué)習(xí)和操作技巧,希望一起學(xué)習(xí),把vimmer的精神發(fā)揚(yáng)光大,讓vim成為你最后的編輯器。