在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最主要的優點在於bug很少,功能非常齊全。 1) 相對於其他大多數RoR IDE各種各樣的bug,radrails在0.7.2版本的表現非常的穩定。在我連續幾個月使用下來,基本沒有什麼大的bug。 2) 功能齊全,其他IDE或多或少功能都有缺失,但radrails功能非常齊全:內建的server管理,generator,rake task,rdoc檢索,plugin安裝,規則運算式校正,tail log,,console調試視窗,debug,代碼格式化,代碼和模板高亮,ruby代碼和rhtml模板的template自動提示,單元測試支援,代碼和測試之間的跳轉,代碼和模板之間的跳轉等等等無所不包。 3) 中文支援非常好,UTF-8編碼支援也非常好。中文字型顯示也很漂亮,這一點對我們來說很重要。 但是radrails也不是沒有缺點,radrails的致命缺點是其RDT功能太弱智。 1) 代碼的感知能力很差,連我敲一個def斷行符號都不會自動補齊end。而且也不能夠搜尋ruby庫檔案進行文法樹分析,所以沒有智能提示功能。 2) 沒有像Eclipse的JDT那樣的Ctrl+O來快速導航到某個方法的功能,這一點對我開發很重要,否則我就總是需要通過serch "def 方法名"才能快速找到要修改的方法,非常不方便,這是我非常垢病RDT的一個地方,也沒有F3快速導航到類定義檔案的功能。 RDT下一個版本0.9.0號稱在兩周以後就會發布(RDT快兩年沒有推出新版本了,實在是太遲鈍了),貌似對於指令碼語言的AST解析能力大大增強,如果真的是這樣,還是很值得期待的,預計RDT0.9.0發布幾周之後,radrails就會發布0.8版本。另外值得一提的是radrails得到了SAP的一些贊助和支援。 2、Netbeans - 最值得期待的IDE Netbeans6.0M7提供了Generic Language Support Framework,一個很強大的指令碼語言架構,在這個架構基礎上提供的ruby和ruby on rails支援表現非凡。可以對ruby語言和庫進行良好的文法分析,從而提供智能化的代碼提示功能,讓ruby程式員也可以享受到敲一個“.”就能夠跳出來詳細提示的功能,真正有了寫Java程式的安全感。有些優點確實很棒: 1) 代碼感知能力超強,不但系統庫的API,你自己項目的所有類API都可以根據上下文提示,有了寫Java程式那種安全感了,也不用跳轉來去找類定義檔案了。 2) 快捷的開啟rails庫檔案和ruby所有庫檔案,類似在Eclipse裡面開啟依賴庫的原始碼和JDK的原始碼的功能,對於學習和熟悉ruby庫和rails非常非常有用。 3) Ctrl+G可以快速定位類定位檔案,類似Eclipse的F3的功能。 目前netbeans這些功能領先所有的其他IDE,非常令人期待。但是netbeans也有些明顯的缺點,有些東西用起來行為非常古怪,可能是因為netbeans6.0還是beta版本,bug太多的緣故,而且也不夠穩定: 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正式發布,ruby外掛程式支援更加成熟以後,我想我會轉移到netbeans上面來。另外非常重要的一點:Sun公司從JDK6以後,致力於JVM平台化發展道路,大力拓展指令碼語言在JVM平台的支援力度,而且Sun給予了JRuby官方支援,所以netbeans平台的指令碼架構和RoR支援是有足夠的商業推動力的,前景應該是最好的! 3、IDEA - 觀望中 貌似前段時間有人撰文推薦IDEA作為首選ruby IDE,我覺得他的理由很奇怪,其實IDEA目前不是好的選擇:其ruby代碼感知能力和智能提示能力明顯不如netbeans,其功能齊全程度又明顯不如radrails,而且最致命的是IDEA竟然不能對rhtml模板高亮和提示,那就宣布了IDEA的基本不可用,另外yml檔案也不能高亮。其外掛程式作者說下一版本會提供rhtml高亮和提示,所以我們對IDEA目前還持觀望態度。 但IDEA也有一些明顯優點,例如IDEA就有對ruby類和ruby資源進行快速定位的快速鍵Ctrl+Alt+N和Alt+N,這明顯優於radrails和netbeans,另外也有在當前檔案快速定位方法的快速鍵,終於克服了我對radrails的最大怨氣。 4、jedit - 貌似沒什麼理由去用它了 作為一個重量級IDE,卻定位在輕量級功能上,要安裝一大堆外掛程式才能勉強把功能跑起來,沒什麼理由去用它。 二、輕量級IDE 1、E - 最值得期待的輕量級IDE E現在確實有很多bug,很多功能缺失,例如:我非常在意的對檔案進行快速定位的快速鍵和在當前檔案中快速定位方法的快速鍵,目前E竟然不支援,但是TextMate可是有的;快速刪除當前行在TextMate當中是Command+L,但是E貌似沒有,諸如此類的功能缺失。所以E和TextMate還是有很大差距的。 但是E確實在主要方面完全複製了TextMate,所以這些小功能上面的缺失應該只是時間問題。所以相信給E半年左右的時間,E會成為Windows平台當之無愧的TextMate。 2、Komodo - 乏善可陳 Komodo是個定位很傳統的指令碼IDE,對於ruby沒有什麼特別好的支援,有最基本的文法高亮和簡單的代碼提示而已,以及一個簡陋的項目樹,運行速度還很緩慢,而且還是收費的,實在不值得去用。 3、RoRed - mini ruby IDE 如果你真要去用Komodo,那我建議你改用RoRed,一個專門針對ruby on rails開發的簡單編輯器,帶有ruby文法高亮,項目樹,功能簡單,可能對某些偏愛UltraEdit/Editplus的人來說用RoRed已經夠用了,速度也挺快的。 4、vim/emacs - 不適合Windows平台的ruby IDE vim以及emacs這些源於Unix平台的IDE,我認為不適合在Windows上面用。因為vim/emacs當初被設計成為一個無滑鼠支援的編輯環境,全部依靠鍵盤命令驅動。當你在Windows下面使用的時候,這種習慣會被打破,從而覺得非常影響效率。 例如在vim裡面執行一個generator,Unix上面會在vim視窗中開buffer顯示,執行完畢敲一下斷行符號就退出這個buffer了,很方便很快捷。但在Windows平台,竟然會彈出一個DOS視窗,而且把鍵盤焦點給轉移到這個DOS視窗上去了。這就迫使你不得不動用滑鼠去選擇這個DOS視窗,然後關閉它,再把焦點定位回到vim上面來。這就喪失了vim最大的優勢了,反而搞的很麻煩。 當然你可以用Alt+Tab鍵來切換視窗,不必動用滑鼠。但遺憾的是Windows作業系統的視窗切換能力很差,一旦你的windows開的視窗多了,在視窗之間快捷切換是一件很麻煩的事情,還不如滑鼠來得快捷。這一點Windows比MacOS有很大的差距。MacOS上面進行多視窗切換那才叫一個爽字呢! 最後我認為輕量級IDE在windows平台的市場不會很大,即使E的功能能夠完善到TextMate的程度,也不會有radrails那麼普及。主要還是和作業系統的支援有關係: 在MacOS上面,你開一個Textmate視窗,一個瀏覽器視窗,一個tail log視窗,一個命令視窗啟動關閉伺服器,一個命令視窗進行console調試,一個命令視窗執行單元測試,還有一個命令視窗串連MySQL資料庫看資料。在這些視窗之間僅僅使用快速鍵進行來回切換是很方便很快捷的事情。 但是Windows的視窗切換功能太弱了,一下開了七個視窗,你編程的時候來回切換的工作效率是很低的。所以在Windows上面要提高工作效率就會傾向於radrails這樣的IDE,把所有功能都整合進來了,只要一個radrails視窗,一個瀏覽器視窗足矣了。這樣工作效率才高。 |