最近嚐鮮試用了一下IntelliJ,使用下來仍是比較爽的,最後我這個不多花錢買軟件的人,也在oschina上買了我的版。IDE畢竟是碼農幹活的傢伙,想一想也值了。使用的時候有一些心得,記錄下來。java
###調整界面爲酷酷的黑色web
Preferences=>Appearance=>theme=>Darculasql
###檢出項目:tomcat
VCS=>Checkout From Version Control,maven項目會被自動識別出來。jsp
###設置快捷鍵:maven
Preferences=>keymaps,有不少套方案,固然即便選擇Eclipse也仍是有不少和Eclipse不一樣的地方。函數
###自動補全:學習
Mac下默認是clt+space,可使用keymaps=>Main menu=>Code=>Competion設置。比Eclipse好的地方是Spring、Maven的xml,乃至freemarker模板以及iBatis的sqlmap都支持高亮和自動補全。ui
###去除自動補全的大小寫敏感:spa
不知道多少童鞋和我同樣被Eclipse慣壞了,使用自動補全徹底不注意大小寫的,IntelliJ默認區分大小寫,非常讓人難過。不過在Editor=>Code Completion裏把Case sensitive completion設置爲None就能夠了。
###自動展開目錄
Eclipse有個打開文件就自動展開目錄的功能,在IntelliJ裏從Project左邊欄的齒輪上選擇Autoscroll to Source和Autoscroll from Source都勾選上便可。
###使用Tomcat運行web項目:
需安裝插件:Tomcat and TomEE intergration
選擇Run=>Edit Configurations,點+,選tomcat server,Deloyment選擇對應artifact。詳細文章:http://my.oschina.net/tsl0922/blog/94621
###項目間文件複製
IntelliJ裏的工做空間是Project,不一樣Project之間是沒有什麼關係的。在一個Project裏copy&paste,會彈出對話框,讓你選擇目標文件夾。也就是說,並無跨Project的複製,而是從源Project把文件複製出去。
###自動編譯
IntelliJ默認是不會自動編譯項目的,因此在run以前會有個make的過程,習慣自動編譯項目的能夠在這裏打開:Compiler=>make project automatically。由於IntelliJ項目空間不大,因此開啓以後也不會像Eclipse同樣出現build workspace好久的狀況。
###Debug
debug最好不要使用method breakpoint,會致使啓動異常緩慢,博主以前就不當心啓動了method breakpoint,而後進入調試要花掉幾分鐘的時間。IntelliJ斷點能夠設置Condition,其實Eclipse也能夠,只不過沒有這麼明顯,同時IntelliJ能夠在Condition進行代碼提示。
###遠程Debug
Run=>Edit Configurations,選擇Add=>remote,而後你懂的。
###File Template
與Eclipse的Code Template相似,只不過IntelliJ內置變量所有爲大寫,例如:${NAME}。可使用#parse("File Header.java")這種格式來導入另外一個文件,跟jsp include的做用同樣,實現複用的一種方式吧。沒有導入/導出,有點不太方便。
###Live Template
用慣了Eclipse快捷鍵的人可能會不習慣,sysout、foreach等快捷方式找不到了,main方法也沒法自動補全了,其實這個在IntelliJ中有一個異常強大的模塊Live Template來實現。
例如,在class中嘗試psvm+tab,則會發現main方法產生了;輸入iter+tab,則生成了foreach語句。 live template還有一個surround的用法,選中某個變量,鍵入ctl+alt+j兩次,則會出現自動補全的菜單。
此外,還能夠自定義Live Template。Code Snippet技術應用也挺廣泛的,IntelliJ的Live Template優勢是內置了一些智能的變量和函數,能夠作到一些語義級別的分析和運用。
###幾句牢騷
IDE的聖戰歷來沒有中止過,Eclipse仍是IntelliJ好?首先,IntelliJ某些更加體貼的功能,讓我感嘆一分錢一份貨。好比選中括號的後面部分,即便滑動到了下一屏,也會將括號開始的部分浮動顯示出來。更重要的,我想引用一下《大教堂與集市》中的比喻,Eclipse比如集市,有開放的環境,自己功能並不求全責備,經過插件來提供相應的功能(最基本的maven、VCS都須要第三方插件提供)。相對的,IntelliJ就像大教堂,內部整合了大多數功能,基本上是一體化的使用設計。
龐大的插件機制和依賴也使得Eclipse出現一些混亂和不穩定。插件依賴/兼容性/穩定性都存在一些問題,並且Eclipse一味向可擴展設計的方式也使得使用起來會更復雜。例如,Eclipse的快捷鍵設置功能,所有是一字平鋪,有一個"when"的選項,我理解這是使用快捷鍵的一個場景。問題是,全部插件均可以向它註冊一個場景,當我真要選擇when的時候,發現列表有兩頁之長,我哪知道選哪一個?相反,IntelliJ的keymap採用了分類的方式,一級分類就是使用場景,而後再進入相應項設置快捷鍵,比Eclipse方便的多。再好比,有人說Eclipse慢,其實極可能並非內核慢,而是一些插件(例如m2e)運行太慢致使的。而IntelliJ基本上都是很迅速的,不多出現失去響應的狀況。
這裏我想引用一篇文章《有人負責,纔有質量:寫給在集市中迷失的一代》http://www.oschina.net/news/32190/a-generation-list-in-the-bazaar。Eclipse龐大的體系註定了插件管理的鬆散性,因此使用者就要忍受一些不穩定和不方便的因素。相比IntelliJ,由於是公司開發,大部分插件都在其管理範圍以內,因此總體質量更好控制。
說到這裏好像就認定IntelliJ好了?其實也未必,由於《大教堂與集市》也提到,開源帶來的生產力是教堂式開發遠不能比的,因此IntelliJ要收費,而Eclipse能夠免費。Eclipse龐大的插件羣,功能的全面性,我的以爲也是IntelliJ比不了的。
最後說一句,說到學習成本,其實IntelliJ是要比Eclipse低的,至少省去了不少配置插件、理清依賴、處理問題的功夫,同時設置也比Eclipse要簡單很多。沒有說越高級的IDE越複雜的說法,只是Eclipse做爲最經常使用的Java IDE,讓你們先入爲主了罷了。