天天看點

從Eclipse轉移到IntelliJ IDEA一點心得

本人使用IntelliJ IDEA其實并不太久,用了這段時間以後,覺得的确很是好用。剛剛從Eclipse轉過來的很多人開始可能不适應,我就把使用過程中的一些經驗和常用功能分享下,當然在看這篇之前推薦你先看完IntelliJ IDEA 的 20 個代碼自動完成的特性,這篇文章對自動完成的特性介紹的非常好,隻是快捷鍵說明部分還可以更完善一些,可以照顧下預設綁定鍵位不一緻的童鞋。本文在說明快捷鍵的時候是根據Mac OSX 10.5+的預設keymap,當然也會提供相關的文字說明,如果和我的綁定不一緻的可以直接去keymap中搜尋即可。

這個以前在Eclipse中是個很簡單的問題,轉移到IntelliJ上以後的一些人也問過這個問題。使用同樣的方式設定了以後發現隻是對目前檔案起作用了,打開另外一個檔案依然沒有行号。就好比你隻是在vim中執行指令<code>set number</code>,而不是在.vimrc中設定一樣的效果。這個是需要在IDE Settings中設定下的,如圖所示勾選即可: 

從Eclipse轉移到IntelliJ IDEA一點心得

其他設定可參照該設定項勾選即可,例如顯示空格等等.

我們在寫代碼的時候經常需要打開某個檔案的時候,想在左邊的檔案樹上自動打開關聯到位置,這樣很友善的找尋本目錄下的其他檔案或者其他的相關檔案,其實這個IntelliJ提供了好幾種解決方案,第一個就是和Eclipse一樣的方式,如下:

以前在Eclipse中設定也很簡單,但是IntelliJ裡面稍微有點不一樣,如果想臨時一次的話,打開檔案的時候點選下圖的小地球(第一眼看的時候很像個小地球儀)圖示即可 

從Eclipse轉移到IntelliJ IDEA一點心得

如果你想和Eclipse的那個一樣,讓這一切自動的話,那麼在上圖的浮層中可以看到兩個選項<code>AutoScroll to Source</code>和<code>AutoScroll from source</code>,IntelliJ很人性化的分了兩個設定在裡面,你兩個都勾選就是基本和Eclipse的功能保持了完全一緻,隻是勾選一個自然也可以.

還有一種方式就是利用IntelliJ提供的Navigation Bar,IntelliJ很多功能操作都可以鍵盤化,這個就是喜歡鍵盤化操作的人的必備功能,操作方式就是打開檔案的時候,使用快捷鍵<code>⌘+UP (Jump to Navigation Bar)</code>,然後就會出現一個下拉,基本就是這個檔案所在目錄的檔案清單,還可以使用上下左右的鍵位來選擇其他目錄,是不是很酷?

備注:此處建議把<code>View &gt; Navigation Bar</code>的選項點掉,這樣就使用快捷鍵之後就會在你滑鼠的位置出現,感覺會更輸入一些,當然這樣你就基本失去了使用滑鼠的權利,這個需要你根據個人癖好使用即可。

如果你是蘋果電腦使用者的話,建議你改成Mac OSX 10.5+的鍵位綁定,因為Mac OSX 10.5這個相容Windows的版本的鍵位實在是太蹩腳了,用着是真難受,好比你預設習慣<code>⌘+w</code>是關閉标簽,在這個鍵位綁定中竟然是根據符号選擇文本的一個快捷鍵.

這裡主要介紹幾個可能大家常用的,或者是你可能并不知道IntelliJ中有的幾個快捷鍵,特别常用的你直接參照官網的Keymap介紹Getting Started就可以了。學會在Keymap中自己查詢需要的快捷鍵是主要的,不要每次都打開那個沒用的百度,具體可以參照本文最後給出的連結。

以前在Eclipse中用的很多的一個快捷鍵就是<code>ctrl+o</code>,這樣可以調出代碼檔案的所有成員變量和方法,并且可以支援搜尋很是友善,IntelliJ這種基本的功能自然是有,新手的話還經常問,這個在IntellJ中的快捷鍵是<code>⌘+F12 (File Structure)</code>。如果你不是Mac OSX 10.5+鍵位綁定的話,小括号中的内容就是你可以去Keymap中去搜尋的内容。

複制整行或者塊:在Eclipse中使用<code>ctrl+alt+Up</code>,IntelliJ預設是<code>⌘+D (Duplicate Line or Block)</code>,其實這個和Eclipse中的有差距,尤其是多行的時候或者選中内容的時候,不信你可以試試。是以你可以把Keymap中的<code>Duplicate Lines</code>定義上一個快捷鍵,我定義的是<code>Option+D</code>,這個鍵位在我的預設綁定中是沒任何快捷鍵的,你可以自己綁定一個試試。

根據符号選擇文本:這個鍵位用的太多了,并且也是非常的好用,舉個例子,有這樣一行代碼<code>&lt;name&gt;SpringSource Milestones Proxy&lt;/name&gt;</code> 你光标在Milestones中的某一個位置,你想替換<code>SpringSource Milestones Proxy</code>為其他單詞,假設想替換為<code>Test XX</code>,其實這樣你隻需要<code>Option+Up (Select Word at Caret)</code>兩下就可以選中你想要的單詞了,當你想在開發過程中,你會發現這個鍵位用的太多了,多到換了其他沒有這個鍵位的編輯器或者IDE上,很是不習慣。

删除整行: 可以直接<code>⌘+delete (Delete Line)</code>或者利用IntelliJ智能的功能,剪切的快捷鍵,當本行選中文本的時候剪切<code>`⌘+x</code>會按照選中的文本實作剪切,但是你本行内無任何選中文本的時候會自動剪切整行,那麼自然就類似一個删除本行的快捷鍵,但是這個其實還是比較蹩腳的,建議使用<code>⌘+delete</code>。

想直接跳轉到接口的實作方法: <code>⌘+option+滑鼠單擊</code>或者<code>⌘+option+B</code>。

語句自動完成 Statements completion:這個在IntelliJ IDEA 的 20 個代碼自動完成的特性中已經說明,這裡還是着重說下,因為的确很好用,也強烈推薦下,還有文中說的<code>智能自動完成 ctrl+shift+Space</code>,當給你的提示太多的時候,這個鍵絕對會給你驚喜.

同樣單詞之間跳轉:在Eclipse中的快捷鍵是<code>ctrl+k</code>,這個挺好用的,在IntelliJ中也不缺這個功能,但是在Mac OSX 10.5+的鍵位綁定中預設為空。據說Windows的預設綁定中是有綁定的,自己可以查詢下,我自己綁定了一個<code>⌘+ctrl+k (Find Word at Caret)</code>,沒有的需要自己綁定一個,然後還能結合其他的鍵位實作上一個<code>⌘+G (Find Next)</code>下一個<code>⌘+Shift+G (Find Previous)</code>的功能.很是實用。

我們開發肯定是有版本控制的,大家以前Eclipse的時候在本地檔案和版本庫不一緻的時候,那麼檔案以及所在的檔案夾都會出現一個<code>〉</code>表示,大家能很輕松的看到本地檔案修改了哪一些,但是IntelliJ中預設是不能這樣的。僅僅是給變化的檔案在修改的時候提供了顔色上的變化,不包括其所在的各個父級檔案夾哦,如果想和Eclipse一樣的話需要如下圖把設定勾選就可以了

從Eclipse轉移到IntelliJ IDEA一點心得

其實看英文解釋就可以明白了,這個預設開啟以後如果想調整檔案夾的顯示顔色的時候就直接去<code>Settings &gt; Editor &gt; Colors &amp; Fonts &gt; File Status</code>中調整即可了,可以調整成自己喜歡的樣子。

IntelliJ在資源檔案這方面個人覺得也是完勝Eclipse的,在Resource Bundle方式下想修改一個屬性是相當友善的,可以在一個操作界面上修改所有語言的屬性,這一切都是自動完成的,如下圖所示:

從Eclipse轉移到IntelliJ IDEA一點心得

并且還很貼心的有一個排序和分組的功能,尤其是這個排序。

預設設定下也有一個問題,就是中文預設會顯示為Unicode碼的,其實勾選一個設定(<code>Settings &gt; File Encodings</code>)就可以了,如下圖:

從Eclipse轉移到IntelliJ IDEA一點心得

這樣設定以後所有Unicode顯示的就可以自動轉化為其應該顯示的語言了.

記得剛開始用Eclipse的時候那時候預設是不支援Java EE項目的,必須使用一個MyEclipse的插件,直到今天好似還有人在用這個玩意,當年的時候每個Web項目修改之後都必須Deploy一下,修改的東西才會被執行,很是痛苦。後來就自己利用Tomcat插件,這個可以保證你修改jsp以及靜态檔案的時候不需要Deploy直接就可以被執行,因為Tomcat的目錄指向其實直接是指向到了你的項目檔案,這樣的确省心了很多。

在IntelliJ中如果你是傳統的Java EE的結構(根目錄下面有src,webMoudle這樣的結構),那麼在直接在Run Configurations中添加一個Tomcat即可,點選+号添加即可(當然需要注意雖然沒搜尋框,你輸入字元會自動給你篩選結果),這樣運作的時候修改Java檔案的話需要主動Make Project也就是<code>⌘+F9 (Make Project)</code>.但是如果你是符合maven約定的項目結構的話如果繼續這樣配置就很不理想了,每次修改了jsp檔案竟然也需要Make Project才可以,因為每次Make Project以後IntelliJ會自動給你DeployMent,這樣好似又回到了幾年前那種很麻煩的環境.

這個問題其實很容易解決,就是不要使用這種方式來運作你的web項目,既然符合maven結構的項目自然是使用maven或者gradle這種建構工具了,那麼你需要利用maven的jetty的插件來運作項目即可了,如下圖配置即可: 

從Eclipse轉移到IntelliJ IDEA一點心得

當然你也可以如下圖直接點選運作就會自動添加一個:

從Eclipse轉移到IntelliJ IDEA一點心得

參看上圖其實也沒必須非用jetty,用tomcat6或者tomcat7的插件運作也可以。

鑒于有一些使用者還沒轉型Maven等來建構項目,當然我也衷心的說一句,建構這塊還是趕緊轉了吧.因為不轉的話還單獨出來這個章節,并且有的操作還是相當麻煩,下面也會講到,還是一一道來吧,導入的時候有兩個選擇然後我分兩個部分說明,點選<code>File &gt; Import Project…</code>,然後選擇你的項目目錄,點選OK,如下圖:

從Eclipse轉移到IntelliJ IDEA一點心得

這個方式圖中所示的第一種,導入基本就是一路next到完成,但是你第一次也可以費點心思注意下每一步做了啥,例如幫你分析了jar有哪一些,如果你使用了Spring還給你分析你的所有配置檔案。最後完成以後項目就開始建構索引,等一切就緒以後我們就可以完成的基本配置了,由于是web項目基本上能夠在Tomcat等伺服器上跑起來就基本算成功了。主要幾個點:

處理好依賴關系,因為我們沒使用maven,是以你得自己動手豐衣足食了

設定java檔案的編譯路徑,如果需要的話

添加你的Tomcat,運作成功

打開<code>File &gt; Project Structure</code> ,本節我們主要用到下圖幾個标紅的部分: 

從Eclipse轉移到IntelliJ IDEA一點心得

我們先了解下這幾個主要部件:

SDKs:主要存放了我們的JDK等,如下圖(我自己下載下傳帶source的JDK,這樣可以直接檢視JDK相關的Java源代碼): 

從Eclipse轉移到IntelliJ IDEA一點心得

Global Libraries:主要是公用的jar檔案,例如servlet的幾個jar可能每個項目都需要,但是Eclipse的變量在此變得不好使,是以需要使用這個地方來配置,如下圖參照使用即可: 

從Eclipse轉移到IntelliJ IDEA一點心得

Facets:在此不做介紹,如有需要後續添加

Libraries:這裡基本是項目的庫,不是全局的,導入的項目一般都會把你Eclipse中的。classpath中的所有的依賴都導過來作為一個lib庫,然後應用到你的項目的子產品中

Modules:這個基本包括了項目的子產品,通常來說Eclipse的項目結構中是單子產品的

我們需要做的配置主要在Modules中,其他的幾個自己根據了解配置即可。

我們先檢視Modules中的Sources,如下圖: 

從Eclipse轉移到IntelliJ IDEA一點心得

把項目所有的源碼都添加即可,圖中所示我的項目中其實少了resource的檔案夾,這樣我選中resource然後點選Sources即可,這樣就會在左邊的Source Folders中添加一個resource的檔案夾。

然後是Paths部分,這個主要是class的輸出路徑,預設是在根目錄下的out檔案夾中,如果項目中對配置檔案的解析等有寫死路徑,必須嚴格遵循Java EE的規範的話,那麼需要将此部分修改如下(如果不存在我假設的情況可忽略本步驟):

從Eclipse轉移到IntelliJ IDEA一點心得

然後的Dependencies,就更好配置了,添加需要的依賴即可。

這些步驟完成以後我們就可以點選<code>Run &gt; Edit Configurations</code> ,點選左上角的+号,然後選擇**Tomcat &gt; Local Server **,這些步驟和Eclipse類似,選擇相應路徑等等,隻需要注意一點就可以,就是需要添加一個DeployMent,如下圖:

從Eclipse轉移到IntelliJ IDEA一點心得

如果是Windows的圖中的DeployMent中的+号可能是在右側,點選之後會彈出對話框選擇檔案夾,選擇eclipse預設的webMoudle檔案夾即可(MyEclipse就是WebRoot檔案夾),這個一定不能選錯,不要選成項目的主檔案夾,否則運作就不成功了,再然後<code>ctrl+R</code>運作即可。以debug方式運作就是<code>ctrl+D</code>。

基本參照上個基本都類似,就是步驟比上個步驟要少點,如果出現問題參照上個章節即可。

以前Eclipse有個HQL的插件可以直接輸入HQL文法,查詢測試結果是否正确,在IntelliJ中你也可以,不過不需要任何插件預設提供支援的,如果在導入項目的時候沒有自動添加Hibernate的支援的話,那需要添加一下Hibernate的支援,滑鼠選中項目,點選右鍵如下圖:

從Eclipse轉移到IntelliJ IDEA一點心得

點選選擇Hibernate即可,如果沒有Hibernate應該是項目已經自動添加了Hibernate的支援了。然後完成以後就可以如下圖操作即可:

從Eclipse轉移到IntelliJ IDEA一點心得

選中上面HQL圖示,在出來的控制台輸入你想輸入的HQL即可了,一樣可以自動完成的哦。

IntelliJ對于檔案是預設随時儲存的,基本不需要你<code>⌘+s</code>(這個鍵位預設是儲存所有),是以需要注意不要随手不小心把某個檔案改了下,然後直接關閉标簽了,其實你的無意的操作已經導緻修改了檔案,可能導緻你在項目運作的時候發現一個很離奇的錯誤,我暫時沒發現可以關閉自動儲存的設定,如果你對此非有強迫症的話,vim的插件可能會幫助到你。

IntelliJ中的檔案是實時和本地檔案同步的,是以Eclipse的重新整理功能就不要問了,因為在這根本不需要那個功能。有的編輯器會提醒你是否和本地檔案更新,這裡也是預設不給任何提醒的,隻要你修改了,這裡就會立即自動同步更新檔案。

在主菜單<code>File</code>下面,有個奇怪的Power Save Mode,這裡也說明下,這個顧名思義是省電模式。當你勾選此模式以後,IntelliJ不會給你完成任何自動完成的功能,例如本來你輸入一個字元會自動提示的,勾選以後就沒有了,如果出現此問題的話可以考慮是不是自己手賤點過這個按鈕噢,這個還是比較适合開會的時候無聊看代碼用的,又省電又不影響你看代碼。

Eclipse中有個<code>F2</code>的功能,可以檢視到Java檔案定義,你在Spring的配置檔案中可能需要配置這個值,但是在IntelliJ中這個是不需要的,因為對于Spring這樣的支援很是完善,你隻需要在class的屬性中輸入class的名字然後<code>ctrl+空格 (Basic 這個在code的completion下面)</code>自動就完成了全路徑,在智能的條件下可能就不需要蹩腳的實作。

項目剛開始導入或者清除cache重新打開的時候,下面的狀态欄部分會顯示Indexing,這個時候你就等着就可以了,基本你想做的事情什麼都不能做,别在這個時候着急點來點去,不過它索引的速度挺快的,别着急。

Eclipse有個Save Actions的功能,主要是針對Java可以自動格式化以及優化import等功能,這個在IntelliJ上其實預設是沒有的,想在IntelliJ中使用這功能可以使用以下兩個思路:

利用宏錄制,宏在開始以後你就格式化下代碼,然後優化下import等操作,然後結束把宏定義一個<code>⌘+s</code>,不過問題就是不管什麼檔案都會執行這個宏,不僅僅是java檔案,我就是利用這個宏主要完成把tab轉為空格。

使用Eclipse Code Formatter的插件,這個插件基本和Eclipse預設的功能類似,但是也有少許差別,使用者自己思量是否使用即可。

在Mac下IntelliJ代碼區域是支援手勢放大的,這個在給别人示範的時候很是友善。但是Run、Debug等視圖的時候預設能使想到的就是手動的拖動大小,很是不便。你可以嘗試下<code>⌘+shift+up/down (Stretch to Top / Bottom)</code>,當然其他的project視圖等的也都可以利用這個快捷鍵配置上下左右的方向鍵來配置使用,友善的很,強烈推薦使用。

IntelliJ 很少會見到搜尋框,其實在沒有搜尋框的地方你試試直接輸入拼音,例如你在 Project 的視圖,打開目錄樹以後你直接敲入字母,如果有符合條件的記錄那麼會有高亮顯示的。

第一次發文,如果有什麼問題歡迎留言交流,原始文檔放在github上,各位如果也有一些技巧不妨共同完善下本文檔。隻需要Fock然後Pull Request就可以了,如果你覺得有個github帳号過于麻煩的話,那我個人覺得你還是轉行比較合适。如果不想更新隻是想訂閱持續更新的内容,隻需要Watch該項目即可。還可以對項目Star,這樣你就可以在自己的帳号頁面快速找到本項目。

Win快捷鍵 Win Keymap

Mac OS 快捷鍵 Mac OS Keymap

繼續閱讀