在MacOS平臺幾乎沒有什么爭議性,大家都用TextMate。但是Windows平臺可供選擇和使用的IDE很多,卻各有各的長處和短處?;谖矣眠^的所有ruby IDE點評一下。windows平臺的RoR IDE主要分為兩類:一類是重量級的全功能IDE,例如Eclipse,Netbeans,IDEA和jedit,運行起來很耗資源,功能比較齊全;另一類是輕量級的IDE,例如Komodo,RoRed,vim,emacs,E,下面一一點評之:
一、重量級的IDE
1、radrails - 當前最值得推薦的IDE
radrails是基于Eclipse的插件,當前版本0.7.2。radrails繼承了Eclipse平臺的各種功能,尤其是CVS/SVN集成特別好,和其他ruby IDE相對比來說,radrails最主要的優(yōu)點在于bug很少,功能非常齊全。
1) 相對于其他大多數(shù)RoR IDE各種各樣的bug,radrails在0.7.2版本的表現(xiàn)非常的穩(wěn)定。在我連續(xù)幾個月使用下來,基本沒有什么大的bug。
2) 功能齊全,其他IDE或多或少功能都有缺失,但radrails功能非常齊全:內(nèi)置的server管理,generator,rake task,rdoc檢索,plugin安裝,規(guī)則表達式校驗,tail log,,console調(diào)試窗口,debug,代碼格式化,代碼和模板高亮,ruby代碼和rhtml模板的template自動提示,單元測試支持,代碼和測試之間的跳轉(zhuǎn),代碼和模板之間的跳轉(zhuǎn)等等等無所不包。
3) 中文支持非常好,UTF-8編碼支持也非常好。中文字體顯示也很漂亮,這一點對我們來說很重要。
但是radrails也不是沒有缺點,radrails的致命缺點是其RDT功能太弱智。
1) 代碼的感知能力很差,連我敲一個def回車都不會自動補齊end。而且也不能夠搜索ruby庫文件進行語法樹分析,所以沒有智能提示功能。
2) 沒有像Eclipse的JDT那樣的Ctrl+O來快速導航到某個方法的功能,這一點對我開發(fā)很重要,否則我就總是需要通過serch "def 方法名"才能快速找到要修改的方法,非常不方便,這是我非常垢病RDT的一個地方,也沒有F3快速導航到類定義文件的功能。
RDT下一個版本0.9.0號稱在兩周以后就會發(fā)布(RDT快兩年沒有推出新版本了,實在是太遲鈍了),貌似對于腳本語言的AST解析能力大大增強,如果真的是這樣,還是很值得期待的,預計RDT0.9.0發(fā)布幾周之后,radrails就會發(fā)布0.8版本。另外值得一提的是radrails得到了SAP的一些贊助和支持。
2、Netbeans - 最值得期待的IDE
Netbeans6.0M7提供了Generic Language Support Framework,一個很強大的腳本語言框架,在這個框架基礎上提供的ruby和ruby on rails支持表現(xiàn)非凡??梢詫uby語言和庫進行良好的語法分析,從而提供智能化的代碼提示功能,讓ruby程序員也可以享受到敲一個“.”就能夠跳出來詳細提示的功能,真正有了寫Java程序的安全感。有些優(yōu)點確實很棒:
1) 代碼感知能力超強,不但系統(tǒng)庫的API,你自己項目的所有類API都可以根據(jù)上下文提示,有了寫Java程序那種安全感了,也不用跳轉(zhuǎn)來去找類定義文件了。
2) 快捷的打開rails庫文件和ruby所有庫文件,類似在Eclipse里面打開依賴庫的源代碼和JDK的源代碼的功能,對于學習和熟悉ruby庫和rails非常非常有用。
3) Ctrl+G可以快速定位類定位文件,類似Eclipse的F3的功能。
目前netbeans這些功能領先所有的其他IDE,非常令人期待。但是netbeans也有些明顯的缺點,有些東西用起來行為非常古怪,可能是因為netbeans6.0還是beta版本,bug太多的緣故,而且也不夠穩(wěn)定:
1) 沒有類似Eclipse的Ctrl+Shift+R那樣的文件快速定位功能,要自己在項目樹里面一層層找,這個實在令人難以忍受。一個大項目動不動幾百個文件,不能快速定位,找起來太影響效率。其實netbeans提供了一個Ctrl+Alt+O的快捷定位,但是不起作用,搜索框總是空的,因此懷疑netbeans有這個功能,目前是bug導致出不來。
2) 沒有在文件中快速定位某個方法的功能,這一點和radrails一樣令人失望。
3) 在編輯器里面好多順手的代碼編輯的快捷功能都沒有,令人很苦惱,這一點顯然不如radrails那么方便。
4) 對中文的支持不好
5) 對yml文件沒有高亮功能
6) 依賴JDK6.0,在JDK5.0上面跑很不流暢。
總得來說,netbeans還是最值得期待的IDE,等到07年底,netbeans6.0正式發(fā)布,ruby插件支持更加成熟以后,我想我會轉(zhuǎn)移到netbeans上面來。另外非常重要的一點:Sun公司從JDK6以后,致力于JVM平臺化發(fā)展道路,大力拓展腳本語言在JVM平臺的支持力度,而且Sun給予了JRuby官方支持,所以netbeans平臺的腳本框架和RoR支持是有足夠的商業(yè)推動力的,前景應該是最好的!
3、IDEA - 觀望中
貌似前段時間有人撰文推薦IDEA作為首選ruby IDE,我覺得他的理由很奇怪,其實IDEA目前不是好的選擇:其ruby代碼感知能力和智能提示能力明顯不如netbeans,其功能齊全程度又明顯不如radrails,而且最致命的是IDEA竟然不能對rhtml模板高亮和提示,那就宣布了IDEA的基本不可用,另外yml文件也不能高亮。其插件作者說下一版本會提供rhtml高亮和提示,所以我們對IDEA目前還持觀望態(tài)度。
但IDEA也有一些明顯優(yōu)點,例如IDEA就有對ruby類和ruby資源進行快速定位的快捷鍵Ctrl+Alt+N和Alt+N,這明顯優(yōu)于radrails和netbeans,另外也有在當前文件快速定位方法的快捷鍵,終于克服了我對radrails的最大怨氣。
4、jedit - 貌似沒什么理由去用它了
作為一個重量級IDE,卻定位在輕量級功能上,要安裝一大堆插件才能勉強把功能跑起來,沒什么理由去用它。
二、輕量級IDE
1、E - 最值得期待的輕量級IDE
E現(xiàn)在確實有很多bug,很多功能缺失,例如:我非常在意的對文件進行快速定位的快捷鍵和在當前文件中快速定位方法的快捷鍵,目前E竟然不支持,但是TextMate可是有的;快速刪除當前行在TextMate當中是Command+L,但是E貌似沒有,諸如此類的功能缺失。所以E和TextMate還是有很大差距的。
但是E確實在主要方面完全克隆了TextMate,所以這些小功能上面的缺失應該只是時間問題。所以相信給E半年左右的時間,E會成為Windows平臺當之無愧的TextMate。
2、Komodo - 乏善可陳
Komodo是個定位很傳統(tǒng)的腳本IDE,對于ruby沒有什么特別好的支持,有最基本的語法高亮和簡單的代碼提示而已,以及一個簡陋的項目樹,運行速度還很緩慢,而且還是收費的,實在不值得去用。
3、RoRed - mini ruby IDE
如果你真要去用Komodo,那我建議你改用RoRed,一個專門針對ruby on rails開發(fā)的簡單編輯器,帶有ruby語法高亮,項目樹,功能簡單,可能對某些偏愛UltraEdit/Editplus的人來說用RoRed已經(jīng)夠用了,速度也挺快的。
4、vim/emacs - 不適合Windows平臺的ruby IDE
vim以及emacs這些源于Unix平臺的IDE,我認為不適合在Windows上面用。因為vim/emacs當初被設計成為一個無鼠標支持的編輯環(huán)境,全部依靠鍵盤命令驅(qū)動。當你在Windows下面使用的時候,這種習慣會被打破,從而覺得非常影響效率。
例如在vim里面執(zhí)行一個generator,Unix上面會在vim窗口中開buffer顯示,執(zhí)行完畢敲一下回車就退出這個buffer了,很方便很快捷。但在Windows平臺,竟然會彈出一個DOS窗口,而且把鍵盤焦點給轉(zhuǎn)移到這個DOS窗口上去了。這就迫使你不得不動用鼠標去選擇這個DOS窗口,然后關閉它,再把焦點定位回到vim上面來。這就喪失了vim最大的優(yōu)勢了,反而搞的很麻煩。
當然你可以用Alt+Tab鍵來切換窗口,不必動用鼠標。但遺憾的是Windows操作系統(tǒng)的窗口切換能力很差,一旦你的windows開的窗口多了,在窗口之間快捷切換是一件很麻煩的事情,還不如鼠標來得快捷。這一點Windows比MacOS有很大的差距。MacOS上面進行多窗口切換那才叫一個爽字呢!
最后我認為輕量級IDE在windows平臺的市場不會很大,即使E的功能能夠完善到TextMate的程度,也不會有radrails那么普及。主要還是和操作系統(tǒng)的支持有關系:
在MacOS上面,你開一個Textmate窗口,一個瀏覽器窗口,一個tail log窗口,一個命令窗口啟動關閉服務器,一個命令窗口進行console調(diào)試,一個命令窗口執(zhí)行單元測試,還有一個命令窗口連接MySQL數(shù)據(jù)庫看數(shù)據(jù)。在這些窗口之間僅僅使用快捷鍵進行來回切換是很方便很快捷的事情。
但是Windows的窗口切換功能太弱了,一下開了七個窗口,你編程的時候來回切換的工作效率是很低的。所以在Windows上面要提高工作效率就會傾向于radrails這樣的IDE,把所有功能都集成進來了,只要一個radrails窗口,一個瀏覽器窗口足矣了。這樣工作效率才高。
最后值得一提的是,所有這些IDE的rhtml編輯功能還是不如textmate,一旦在html標簽里面嵌入代碼段,就不能高亮了。而textmate是不會這樣的。