釵黛雙收:若你也同Vim難割捨,卻又看Emacs情切切

1 釵黛雙收:若你也同Vim難割捨,卻又看Emacs情切切 (引子)

這篇文章分享個人一些經歷,寫給和我同樣對嬌小的Vim難以割捨,又在抱上Emacs這個你們閨秀之後死活不肯意撒手的朋友們。 html

若是你不知道什麼是「編輯器聖戰」,那不妨百度Google一下,總之是自從開闢鴻蒙以來,就有兩個以伴君左右爲己任的賢內助(Vim編輯器和Emacs 編輯器)在互掐。因爲兩位佳人的理念差異之大,加上各自陣營之間的鴻溝之深,使得先賢先哲基本上都會在這兩個陣營裏面挑一個來站隊。編程

網絡普及之後,凡是有帖子對Vim和Emacs這兩大編輯器做出比較,大都有成爲必刪貼的潛質。緣由很好理解,不管是誰看了紅樓夢,很難不對寶釵黛玉這兩位 產生點好惡,此後但凡是有人起了個頭要對釵黛二人作點比較,那後面的樓常常能蓋歪到變成地域攻擊男女對罵。在技術論壇裏,這樣折騰不被河蟹掉纔怪。更有甚 者,若是誰在討論編程的時候問了一句「須要作xx開發,用什麼工具比較好?」隨後也經常演變成Vim對Emacs的釵黛攻伐,最後同樣飛沙走石天昏地暗。 這就說明,選擇Vim或Emacs已經不只取決於咱們在編輯文本時的好惡,而已經上升到幹活的人怎麼挑工具,過日子的人怎麼選老婆這種哲學高度的問題。vim

我一貫以爲,成事者不可狹於器。因此選工具時候不必爲了工具自己而搞個粉絲團,而是就着菜選刀,比着孩子找媳婦,攬來什麼樣的活計使什麼樣的傢伙。若以 個人經驗來歸納,Vim的犀利在於鍵盤操做,練家子爽得是用最少的手指運動完成編輯;Emacs的NB在於自定義功能,高手們都有一套獨門不傳的腳本,所 以Emacser滿手都是絕活,靠這些絕活上天入地無所不能。注意,這裏要講的既不是比出高下,也不是評測完了各打五十大板和稀泥。而是說說提煉出兩個工 具的精華加以「雙修」,用足夠務實的態度來平息爭端。瀏覽器

先說點野史當引子。大學裏面歷來都不缺廢寢忘食折騰電腦的兄弟。他們當中應該有很多動機都和當年的我同樣:但願被人誤認爲是電腦高手。這種假裝有一個巨大的好處——沒準能多給女生重裝幾回Windows。網絡

不過,重裝Windows的高手們爲了哥們面前神侃時不露怯,基本上還要玩過點通常人玩不轉的GNU/Linux。我想,工科男生們的Linux情結,怕有很多是所以而生。然而凡事不易,玩Linux是要本身改配置文件的,這卻是根硬骨頭。編輯器

骨頭硬的重要緣由麼,編輯器不順手。在那沒有Ubuntu的年代裏,誰要是折騰幾個晚上裝好一臺Linux的小白肉雞,會發現可用的編輯器只有Vim。這 玩意和Windows的記事本、Dos的edit相比簡直就是個怪胎。這一點想必Emacser也深有感觸吧,進到Vim裏面如果不懂命令,確定是在一陣 滴滴滴事後連一個字母都敲不到屏幕上。工具

當裝機聖手們的情商智商廣泛被挑戰了之後,大體是迅速分化爲兩派——啃骨頭派和換骨頭派。啃派如我,繼續捏着腳適應Vim的小鞋;換派不用說也能猜到,天然是鞋也不要就轉身踏入了Emacs陣營——在那邊起碼知道怎麼打字。ui

按說天朝對於西方的編輯器聖戰應該是打醬油的態度,但實際狀況是,啃派和換派儼然造成了本身的聖戰副本。spa

2 釵黛雙收:若你也同Vim難割捨,卻又看Emacs情切切 (Vim篇)

那段時間做爲Vim啃派,我和許多隊友同樣有個自恃甚高的理由來支持Vim:編輯時擊鍵次數最少。可是私下裏想一想,這個理由多少有些往臉上貼金。操作系統

其實Vim用多了之後,並不僅是臣服於高效,更多的是手指頭上癮。用咱們運動神經控制的行話來講,Vimer的大腦已經被觸覺感官和運動神經一塊兒綁架了。那些用手指肌肉記住的命令,執行起來基本不怎麼過腦子。並且一旦命令執行成功,腦中還會生成大量「多巴胺」以示獎勵。

看過《生活大爆炸》的應該都有印象,Leslie夜晚敲Leonard的門,只不過是爲了緩解本身多巴胺分泌過剩……因此Vimer生存在這樣一種狀態 下:只要不用hjkl這種奇怪的擊鍵來移動光標,就會流着眼淚打着呵欠思念不已;反過來一旦用上了hjkl,那就等於在重複《生活大爆炸》裏面那種神經感 受。你說像在嗑藥也行。

Vim癮上身以後必然產生一個願望,那就是以嗑藥的方式,額,以Vim的方式來操做全部的軟件。很不幸,持有這種願望的啃派們幾乎都會發現,就算骨頭啃下來了,它也是打狗不能的。

首先,想替小家碧玉Vim擴展出十八般武藝,這個基本上真的很難。難的根本緣由是Vim給用戶預留的擴展能力先天不足。Vim的設計者壓根沒考慮把它作成一個放之四海而皆準的巨無霸,因此Vim打從孃胎裏出來時在胃口上就不太給力。

既然此路不通,那隻好另求變法。爲了讓啃骨頭時攢下的功夫不至於荒廢,能不能對其餘軟件的鍵盤操做方式動動刀,讓它們起碼和Vim敲起來差很少?這也很 難。雖然軟件的操做方式一般能夠自定義,但自定義的途徑大可能是修改鍵位綁定。這種途徑有個與生俱來的短板,它並不能區分出Vim裏的「命令模式」和「編輯 模式」。不巧的是,這種模式區分偏偏是Vim操做方式的核心。說到底,要想在其餘軟件裏面模擬Vim,基本上等同於從新開發一遍。因此這麼多年我只見到 Firefox的Vimperator插件作到了在宿主軟件(Firefox)中對Vim幾乎徹底模擬(固然有若干Chrome和Visual Studio的插件也能夠部分模擬Vim,但我的意見它們的「類Vim」程度都還差得遠)。並且現現在瀏覽器混戰成這個樣子,哪一個插件都巴不得全機種通 吃,但Vimperator卻絲毫沒有往其餘瀏覽器上移植的意思。這也從某種意義上證實模擬Vim不是件容易的事。

折騰這一大圈,發現一個無奈而不爭的事實:Vim因爲太過婉約,終歸沒有可能升任管家。意思就是不可能讓全部軟件用起來都像是在操做Vim同樣。因此我只 好把Vim養在硬盤裏沒事繡繡花打打字,而讓管家這個肥缺虛位以待。起色出如今某一天,那天后知後覺的看到了一個老掉牙的故事,福特汽車的創始人亨利福特 說,在汽車發明之前若是你問消費者想要什麼,他們會說想要跑得更快的馬。蘋果的喬大爺也老是拿這個故事來講事,意思就是我蘋果這才叫真正抓住了問題的核心 ——(出門人)要的未必是馬,而是快;(iPhone粉絲)要的未必是多任務,而是上網的時候還能聽個小曲。

這個產品設計的例子啓發在哪?在我看來,當一個願望被挖出來之後,不見得須要照本宣科才能知足這個願望。若是換個解法還能知足,那說明你hit the button了。換句話說,當引子出來後,故事往下怎麼續是文無定法的。

回到眼前這個事上,啃骨頭派的願望是用Vim的操做方式來一統江湖,不過果然非得「用Vim的方式」嗎?恐怕重點仍是「一桶漿糊」吧。玩電腦的都是懶人, 懶人有個癖好叫「Don’t repeat yourself」,若是誰弄出一套比較高效的鍵盤操做方式,能讓我學一次之後就不用再學了,那就暫時去tnnd的門派。

用個比方來作總結,Vim實在是精緻獨特得有點像個林妹妹。但誰要是但願家裏也有個林妹妹,光把自家丫頭照着繡像打扮打扮是不行的,必須從零開始養成一個。並且就算真能養出來個「天上掉下來」通常的可人兒,管家婆的位置仍然沒她的份。

3 釵黛雙收:若你也同Vim難割捨,卻又看Emacs情切切 (Emacs篇,結局)

一旦破除了心理障礙,在Vim以外尋求「管家婆」的人選也就不算做倒戈了。電影《社交網絡 The Social Network》裏面有這樣一個鏡頭,在扎克伯格同窗悲憤不已,要把女生頭像和畜生豬狗一塊兒打分時,他來了句「有必要重啓Emacs,修改代碼」。這個杜 撰的場景告訴咱們,IT巨星再怎麼胸懷壯志,始於足下的不過是手指另外一端連着的編輯器。當geek們叫囂要在世界上留下一個痕跡(make a dent in the universe)的時候,手裏經常拎着一把折凳,折凳背面寫着——Emacs。

我用Emacs的最初經歷和不少Emacser可能稍有不一樣,但想必都是從跌跌撞撞的青澀回憶開始,最後讓Emacs成了一個「全能伴侶」而渾不自知。博 士期間,我主要用的工具是Matlab和Visual Studio,這兩個工具自帶的編輯器與Vim相比都是小白,屬於要嚴重影響心情和智商的那一種。可是,不管是Matlab仍是Visual Studio,它們自帶的小白編輯器都只有Emacs模式,沒有Vim模式(緣由如前所述,模擬Vim很難)。這好歹是聊勝於無,並且既然Emacs用戶 能從中受益,我憑什麼不試試。不得不說,若是目的是用統一的鍵盤操做方式來使用各類軟件,Emacs的領地實在是太廣了。除了Matlab和Visual Studio這種內部假裝出一部分Emacs的快捷鍵之外,很是值得一提的是還有一個日本人寫的軟件Xkeymacs。這玩意乾脆把Windows的快捷 鍵所有接管了,直接讓全部Windows軟件用起來都跟Emacs一個感受。因此若是你像我同樣不得不在Word裏面寫文稿的話 (Neuroscience領域不少教授不是工程背景,只用Word),就知道Xkeymacs讓你舒服在哪裏了。難怪一個老外在評價的時候說 Xkeymacs這個李鬼軟件好到讓人「心中不安(disturbingly good)」。

搞笑的是,我是直到在Xkeymacs這種替身雜牌軍中用熟了Emacs快捷鍵以後,纔開始慢慢嘗試Emacs本尊。開始時先把Emacs配成了 Matlab IDE,用它搞定了整個博士課題的數據處理,後來又陸續使用了cedet,etag,yasnippet這些擴展,再加上秒殺筆記、日程、Wiki、表 格、博文的org-mode……算是把我這個入門級的Hacker武裝到了神經末梢。雖然我不像其餘Emacser通常能夠驕傲的說本身「活在Emacs 裏」,但若說最近重要的工做成果都是在Emacs上創做出來,這話倒是一點也不假。到了這個時候,Emacs已經徹底升任管家婆,堪比寶釵再世。若是誰也 有似曾相識的回憶,想必能夠深入體會到這樣一個比較狗血的劇情,若寶玉能和Emacs同樣的寶釵姐姐繼續好下去,那徹底有但願弄出個明朝版的百度,東山再 起。

但是做爲Vim的死忠,對於手掌幾乎不挪窩的嚮往,那是消失不掉的。

坊間對於Emacs有一條經典評語,說Emacs是「假裝成編輯器的操做系統」。言下之意就是Emacs什麼都能作(包括經典的煮咖啡)。 既然Emacs都神通成瑞士軍鏟了,何不另闢蹊徑,用軍鏟削出一個Vim呢?西方究竟是計算機技術的始做俑者,對Emacs這種恐龍級工具而言,能被擺弄 的四十年來都被擺弄一遍了。因此只要放狗一搜,就會發現Emacs竟然自帶Vim模擬,名叫viper-mode。並且爲了讓viper-mode更像 Vim,還有第三方開發了一套叫作vimpulse的加強包。也就是說,只要下載一個vimpulse.el腳本,丟到Emacs的啓動路徑中,它就能夠 幾乎完美的模擬Vim!

寫到這裏,折騰的兩條主線已在此收斂,引起「聖戰」的兩大神器也已經被和諧進了同一個窗口。再往下就該寫些技術筆記和心得回顧,不在這篇的目的以內,所以 應該歇筆了。若是要問我究竟是在用Emacs仍是在用Vim,或問哪一方贏得了個人選擇?我也不知道。每當想寫點程序、調段腳本、碼點wiki、記記筆記 的時候,我用的都是Emacs提供的外加本身用eLisp擴展出的功能;可是當碼出來的東西讓人不爽,須要瀏覽、修改和整理的時候,手指彈出的又都是 Vim的命令。

回到最開始說的,如果你用電腦要作的事和我差很少,並且也以爲用鍵盤工做是很爽的一件事,那就應該試試Emacs+Vim雙修。道理很簡單,假如你是包工 頭,而Emacs和Vim是兩位身手不凡的應聘者,那麼固然應該是兩個都收了然後「擇其善者而從之」,這纔是對自家生意負責。不過對選編輯器如選媳婦的人 來講,兩大神器雙修在手,盡在此一句:

惘於環肥燕瘦,顰悵蹙茫

哪比舉釵盈黛,牽黃擎蒼?

相關文章
相關標籤/搜索