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