我一直在尋找最好的編輯器。Emacs和Vim都是很?chē)虖埖木庉嬈?,和Notepad一樣,一般可以當作炫耀的資本。
“哥們,用啥編輯器?”
“嗯……Notepad++”
“你丫不愛(ài)國!”
“UltraEdit……(或其他商業(yè)編輯器)”
“鄙視,用的盜版吧!”
“Emacs!”
“牛人!”敬仰之情如滔滔江水,連綿不絕……
“Vim!”
“強人!”敬仰之情如滔滔江水……
不過(guò)Vim和Emacs經(jīng)常吵架,說(shuō)服對方使用自己,企圖一統天下。雖然Notepad表示沒(méi)有壓力,但是其他編輯器因為不在一個(gè)等級上,想有壓力都不行。
其實(shí)我們對有些編輯器神話(huà)了。Vim和Emacs不過(guò)是古老的編輯器而已,多幾個(gè)快捷鍵也是迫不得已,因為那時(shí)沒(méi)有鼠標。而且我們認為越是難用的軟件越牛逼,其實(shí)是在折磨你自己。你能用Emacs,不一定能看得懂Emacs的源代碼;你能用Vim做開(kāi)發(fā),也不一定能寫(xiě)出什么像樣的程序。畢竟Windows下很多程序都是用Visual Studio寫(xiě)成的。
我在Windows下用Vim幾年了,用來(lái)寫(xiě)程序,加密個(gè)日記之類(lèi)的,都挺不錯,也很方便。網(wǎng)上x(chóng)Beta的網(wǎng)站推薦非編程人員用Vim,寫(xiě)的教程很漂亮。我也經(jīng)常玩Linux,完全沒(méi)有壓力,因為會(huì )Vi和正則表達式,在Linux下就會(huì )方便很多。
Vim相比Emacs,尤其是在Windows下,方便好用的多。不過(guò)也有缺點(diǎn)。Vim只有在utf-8編碼下才能中英文使用不同的字體,其他編碼只能使用一種字體,也就是說(shuō),要不你就中文亂碼,要不你就用中文字體顯示英文(我哪個(gè)都受不了,終于把所有的東西都搞成utf-8,這在Linux下倒也沒(méi)事,在GBK的Windows下,偶爾就有點(diǎn)麻煩)。Vim腳本執行速度有點(diǎn)慢,插件也不太實(shí)用。我安裝過(guò)CppComplete,偶爾能用,偶爾不能用,大部分時(shí)間都不能用。我安裝了兩個(gè)插件c-support和perl-support,Vim的加載時(shí)間就和Emacs一個(gè)量級了,實(shí)在不能接受,只能不用插件。好在Vim本身就挺好的,用不著(zhù)太多插件。Emacs的速度慢,估計也和他自帶的解釋器性能有關(guān),插件一多(Emacs大多數功能都是腳本實(shí)現的),估計就不行了。記得某個(gè)Vim插件的作者使用Python腳本而不是VimScript,他說(shuō)Python腳本的速度是VimScript的幾十倍。
Emacs我也體驗過(guò)一段時(shí)間,配置好了確實(shí)好用,但是完全沒(méi)有傳說(shuō)中的那么神奇。我一開(kāi)始只是用來(lái)學(xué)elisp。就我而言,Emacs確實(shí)是一個(gè)優(yōu)秀的elisp解釋器和開(kāi)發(fā)平臺,但是確實(shí)是一個(gè)糟糕的編輯器。Emacs的快捷鍵有什么讓人欽佩的地方嗎?高級一點(diǎn)的編輯器都可以為所有的動(dòng)作設置快捷鍵,沒(méi)什么了不起。Emacs的界面做的也夠差,配置也很麻煩,插件的安裝也很糟糕。
我看過(guò)Emacs的核心源碼,用來(lái)學(xué)習elisp的實(shí)現,甚至想寫(xiě)一本《Emacs源碼剖析》,賺點(diǎn)外快,因為目前還沒(méi)有人去寫(xiě)這方面的東西。后來(lái)就放棄了,一是沒(méi)有太大意義,使用Emacs的人,一種確實(shí)時(shí)間長(cháng)了,習慣了,另一種就是拿著(zhù)Emacs裝逼,實(shí)際上平時(shí)也不怎么用的(估計只有裝逼的人會(huì )買(mǎi)我的書(shū));二是Emacs的源代碼有點(diǎn)混亂,到了圖形界面的部分,把Windows的結構什么的全部define成X Window的,實(shí)在想不通,即使想保持核心源碼的一致性,也不用這么變態(tài)吧?Emacs居然能在Windows上成功運行起來(lái),我終于發(fā)現,Emacs確實(shí)是變態(tài)程序員寫(xiě)給變態(tài)用戶(hù)用的變態(tài)編輯器!
jEdit是個(gè)低調的編輯器。沒(méi)多少人關(guān)注,卻不斷發(fā)展。最近我終于熟悉了jEdit,雖然很早之前就用過(guò),但是因為不能顯示中文就放棄了。后來(lái)發(fā)現顯示中文不是jEdit的問(wèn)題,而是Java運行時(shí)的問(wèn)題。改一下Java的運行時(shí)配置,就可以完美顯示中文(以及中英文字體混合使用)。于是我下載了幾個(gè)常用的插件,經(jīng)過(guò)簡(jiǎn)單的配置,jEdit已經(jīng)很好用了!
jEdit的文檔很詳細,學(xué)習沒(méi)有壓力。jEdit很現代,沒(méi)有那種折磨人的快捷鍵(當然也有相當數量的快捷鍵,并且可以為所有的宏和編輯動(dòng)作設置快捷鍵)。jEdit很強大,她的腳本(宏)語(yǔ)言是Bean Shell,一個(gè)Java解釋器,想想吧,你可以通過(guò)Bean Shell調用所有的JDK平臺的功能。jEdit插件是編譯好的Java文件(而不是宏,只有小功能才用宏實(shí)現),一般體積小巧,安裝方便,速度優(yōu)勢沒(méi)得說(shuō),jEdit安裝十來(lái)個(gè)插件,啟動(dòng)速度不會(huì )慢到哪。jEdit也有Server架構,可以后臺運行,加快啟動(dòng)速度。jEdit使用Socket通信,但是看看幫助文件對安全問(wèn)題的解釋?zhuān)憔蜁?huì )開(kāi)心一笑,jEdit的Server要求64位整數隨機密鑰認證,只有本地的Client知道,而且一次錯誤就會(huì )使Server關(guān)閉。
jEdit的插件都很有用,比如安裝了Scheme插件,就可以系統調整編輯器主題(代碼高亮,不是Swing主題)。自帶的有很多不錯的主題,比Vim的強多了。也可以安裝LookAndFeel插件,帶了很多漂亮的Swing主題(當前有Bug,不過(guò)一般自帶的就夠了,除了代碼高亮,外表的是浮云)。還有Command插件,有BeanShell和Windows的Console,Dock在下面,好用的很。其他如ProjectViewer,FileBrower、ErrorList、JavaSideKick(Java代碼提示和補全,Java文檔結構顯示)、甚至IRC插件,都很好用。具體的太多了,不細說(shuō)了。
Vim的加密功能挺好用,后來(lái)發(fā)現jEdit有兩個(gè)宏Encypt_Current和Decrypt_Current,使用Java的加密功能,用MD5和DES算法加密當前文檔,雖然加密后的文件和Vim加密的文件相比,體積大了些,但安全性應該比Vim好吧。
jEdit安裝文件只有4M多,插件大多體積都很小,而且都是jar文件。和Vim、Emacs幾十兆的安裝包,和一堆腳本文件比起來(lái),小巧干凈了很多。如果你能去看jEdit的源代碼,清晰度自然也不必說(shuō)。加上jEdit利用了Java平臺和BeanShell,其強大的擴展性能更不必說(shuō)。我只想說(shuō)jEdit無(wú)論是功能、擴展、跨平臺、美觀(guān),都是我目前看到的最令人滿(mǎn)意的編輯器。
簡(jiǎn)單配置后的jEdit:

聯(lián)系客服