從Eclipse轉移到IntelliJ IDEA的一點心得

IntelliJ使用指南—— 深刻理解IntelliJ的Web部署邏輯java

Intellij IDEA 部署Web項目,解決 404 錯誤git

Intellij IDEA快捷鍵的使用github

 本文轉載地址web

本人使用IntelliJ IDEA其實並不過久,用了這段時間之後,以爲的確非常好用。剛剛從Eclipse轉過來的不少人開始可能不適應,我就把使用過程當中的一些經驗和經常使用功能分享下,固然在看這篇以前推薦你先看完IntelliJ IDEA 的 20 個代碼自動完成的特性,這篇文章對自動完成的特性介紹的很是好,只是快捷鍵說明部分還能夠更完善一些,能夠照顧下默認綁定鍵位不一致的童鞋。本文在說明快捷鍵的時候是根據Mac OSX 10.5+的默認keymap,固然也會提供相關的文字說明,若是和個人綁定不一致的能夠直接去keymap中搜索便可。vim

基本設置

顯示行號

這個之前在Eclipse中是個很簡單的問題,轉移到IntelliJ上之後的一些人也問過這個問題。使用一樣的方式設置了之後發現只是對當前文件起做用了,打開另一個文件依然沒有行號。就比如你只是在vim中執行命令set number,而不是在.vimrc中設置同樣的效果。這個是須要在IDE Settings中設置下的,如圖所示勾選便可: image其餘設置可參照該設置項勾選便可,例如顯示空格等等.tomcat

文件和導航關聯

咱們在寫代碼的時候常常須要打開某個文件的時候,想在左邊的文件樹上自動打開關聯到位置,這樣很方便的找尋本目錄下的其餘文件或者其餘的相關文件,其實這個IntelliJ提供了好幾種解決方案,第一個就是和Eclipse同樣的方式,以下:服務器

  • 之前在Eclipse中設置也很簡單,可是IntelliJ裏面稍微有點不同,若是想臨時一次的話,打開文件的時候點擊下圖的小地球(第一眼看的時候很像個小地球儀)圖標便可 image若是你想和Eclipse的那個同樣,讓這一切自動的話,那麼在上圖的浮層中能夠看到兩個選項AutoScroll to SourceAutoScroll from source,IntelliJ很人性化的分了兩個設置在裏面,你兩個都勾選就是基本和Eclipse的功能保持了徹底一致,只是勾選一個天然也能夠.

還有一種方式就是利用IntelliJ提供的Navigation Bar,IntelliJ不少功能操做均可以鍵盤化,這個就是喜歡鍵盤化操做的人的必備功能,操做方式就是打開文件的時候,使用快捷鍵 alt+home健 ⌘+UP (Jump to Navigation Bar),而後就會出現一個下拉,基本就是這個文件所在目錄的文件列表,還可使用上下左右的鍵位來選擇其餘目錄,是否是很酷?eclipse

備註:此處建議把View > Navigation Bar的選項點掉,這樣就使用快捷鍵以後就會在你鼠標的位置出現,感受會更輸入一些,固然這樣你就基本失去了使用鼠標的權利,這個須要你根據我的癖好使用便可。jsp

快捷鍵使用

若是你是蘋果電腦用戶的話,建議你改爲Mac OSX 10.5+的鍵位綁定,由於Mac OSX 10.5這個兼容Windows的版本的鍵位實在是太蹩腳了,用着是真難受,比如你默認習慣⌘+w是關閉標籤,在這個鍵位綁定中居然是根據符號選擇文本的一個快捷鍵.maven

這裏主要介紹幾個可能你們經常使用的,或者是你可能並不知道IntelliJ中有的幾個快捷鍵,特別經常使用的你直接參照官網的Keymap介紹Getting Started就能夠了。學會在Keymap中本身查詢須要的快捷鍵是主要的,不要每次都打開那個沒用的百度,具體能夠參照本文最後給出的連接。

Outline調出

之前在Eclipse中用的不少的一個快捷鍵就是ctrl+o,這樣能夠調出代碼文件的全部成員變量和方法,而且能夠支持搜索非常方便,IntelliJ這種基本的功能天然是有,新手的話還常常問,這個在IntellJ中的快捷鍵是⌘+F12 (File Structure)。若是你不是Mac OSX 10.5+鍵位綁定的話,小括號中的內容就是你能夠去Keymap中去搜索的內容。

基本操做

  • 複製整行或者塊:在Eclipse中使用ctrl+alt+Up,IntelliJ默認是⌘+D (Duplicate Line or Block),其實這個和Eclipse中的有差距,尤爲是多行的時候或者選中內容的時候,不信你能夠試試。因此你能夠把Keymap中的Duplicate Lines定義上一個快捷鍵,我定義的是Option+D,這個鍵位在個人默認綁定中是沒任何快捷鍵的,你能夠本身綁定一個試試。
  • 根據符號選擇文本:這個鍵位用的太多了,而且也是很是的好用,舉個例子,有這樣一行代碼<name>SpringSource Milestones Proxy</name> 你光標在Milestones中的某一個位置,你想替換SpringSource Milestones Proxy爲其餘單詞,假設想替換爲Test XX,其實這樣你只須要Option+Up (Select Word at Caret)兩下就能夠選中你想要的單詞了,當你想在開發過程當中,你會發現這個鍵位用的太多了,多到換了其餘沒有這個鍵位的編輯器或者IDE上,非常不習慣。
  • 刪除整行: 能夠直接⌘+delete (Delete Line)或者利用IntelliJ智能的功能,剪切的快捷鍵,當本行選中文本的時候剪切`⌘+x會按照選中的文本實現剪切,可是你本行內無任何選中文本的時候會自動剪切整行,那麼天然就相似一個刪除本行的快捷鍵,可是這個其實仍是比較蹩腳的,建議使用⌘+delete
  • 想直接跳轉到接口的實現方法: ⌘+option+鼠標單擊或者⌘+option+B
  • 語句自動完成 Statements completion:這個在IntelliJ IDEA 的 20 個代碼自動完成的特性中已經說明,這裏仍是着重說下,由於的確很好用,也強烈推薦下,還有文中說的智能自動完成 ctrl+shift+Space,當給你的提示太多的時候,這個鍵絕對會給你驚喜.
  • 一樣單詞之間跳轉:在Eclipse中的快捷鍵是ctrl+k,這個挺好用的,在IntelliJ中也不缺這個功能,可是在Mac OSX 10.5+的鍵位綁定中默認爲空。聽說Windows的默認綁定中是有綁定的,本身能夠查詢下,我本身綁定了一個⌘+ctrl+k (Find Word at Caret),沒有的須要本身綁定一個,而後還能結合其餘的鍵位實現上一個⌘+G (Find Next)下一個⌘+Shift+G (Find Previous)的功能.非常實用。

版本控制設置

咱們開發確定是有版本控制的,你們之前Eclipse的時候在本地文件和版本庫不一致的時候,那麼文件以及所在的文件夾都會出現一個表示,你們能很輕鬆的看到本地文件修改了哪一些,可是IntelliJ中默認是不能這樣的。僅僅是給變化的文件在修改的時候提供了顏色上的變化,不包括其所在的各個父級文件夾哦,若是想和Eclipse同樣的話須要以下圖把設置勾選就能夠了
vcs_show_dir_status其實看英文解釋就能夠明白了,這個默認開啓之後若是想調整文件夾的顯示顏色的時候就直接去Settings > Editor > Colors & Fonts > File Status中調整便可了,能夠調整成本身喜歡的樣子。

Java資源文件非英文的狀況顯示

IntelliJ在資源文件這方面我的以爲也是完勝Eclipse的,在Resource Bundle方式下想修改一個屬性是至關方便的,能夠在一個操做界面上修改全部語言的屬性,這一切都是自動完成的,以下圖所示:resource_bundle

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

默認設置下也有一個問題,就是中文默認會顯示爲Unicode碼的,其實勾選一個設置(Settings > File Encodings)就能夠了,以下圖:
resource_native_to_ascii

這樣設置之後全部Unicode顯示的就能夠自動轉化爲其應該顯示的語言了.

符合Maven約定結構的web項目如何更好的運行

記得剛開始用Eclipse的時候那時候默認是不支持Java EE項目的,必須使用一個MyEclipse的插件,直到今天好似還有人在用這個玩意,當年的時候每一個Web項目修改以後都必須Deploy一下,修改的東西纔會被執行,非常痛苦。後來就本身利用Tomcat插件,這個能夠保證你修改jsp以及靜態文件的時候不須要Deploy直接就能夠被執行,由於Tomcat的目錄指向其實直接是指向到了你的項目文件,這樣的確省心了不少。

在IntelliJ中若是你是傳統的Java EE的結構(根目錄下面有src,webMoudle這樣的結構),那麼在直接在Run Configurations中添加一個Tomcat便可,點擊+號添加便可(固然須要注意雖然沒搜索框,你輸入字符會自動給你篩選結果),這樣運行的時候修改Java文件的話須要主動Make Project也就是⌘+F9 (Make Project).可是若是你是符合maven約定的項目結構的話若是繼續這樣配置就很不理想了,每次修改了jsp文件居然也須要Make Project才能夠,由於每次Make Project之後IntelliJ會自動給你DeployMent,這樣好似又回到了幾年前那種很麻煩的環境.

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

固然你也能夠以下圖直接點擊運行就會自動添加一個:

maven-jetty-plugin-run
參看上圖其實也沒必須非用jetty,用tomcat6或者tomcat7的插件運行也能夠。

Eclipse的web結構項目如何導入和運行

鑑於有一些用戶還沒轉型Maven等來構建項目,固然我也衷心的說一句,構建這塊仍是趕忙轉了吧.由於不轉的話還單獨出來這個章節,而且有的操做仍是至關麻煩,下面也會講到,仍是一一道來吧,導入的時候有兩個選擇而後我分兩個部分說明,點擊File > Import Project…,而後選擇你的項目目錄,點擊OK,以下圖:

image

使用新建項目來導入

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

  • 處理好依賴關係,由於咱們沒使用maven,因此你得本身動手豐衣足食了
  • 設置java文件的編譯路徑,若是須要的話
  • 添加你的Tomcat,運行成功

依賴關係

打開File > Project Structure ,本節咱們主要用到下圖幾個標紅的部分: project_structure
咱們先了解下這幾個主要部件:

  • SDKs:主要存放了咱們的JDK等,以下圖(我本身下載帶source的JDK,這樣能夠直接查看JDK相關的Java源代碼): project_structure_sdks
  • Global Libraries:主要是公用的jar文件,例如servlet的幾個jar可能每一個項目都須要,可是Eclipse的變量在此變得很差使,因此須要使用這個地方來配置,以下圖參照使用便可: project_strutcture_global
  • Facets:在此不作介紹,若有須要後續添加
  • Libraries:這裏基本是項目的庫,不是全局的,導入的項目通常都會把你Eclipse中的。classpath中的全部的依賴都導過來做爲一個lib庫,而後應用到你的項目的模塊中
  • Modules:這個基本包括了項目的模塊,一般來講Eclipse的項目結構中是單模塊的

咱們須要作的配置主要在Modules中,其餘的幾個本身根據理解配置便可。

  1. 咱們先查看Modules中的Sources,以下圖: project_structure_modules_sources
    把項目全部的源碼都添加便可,圖中所示個人項目中其實少了resource的文件夾,這樣我選中resource而後點擊Sources便可,這樣就會在左邊的Source Folders中添加一個resource的文件夾。
  2. 而後是Paths部分,這個主要是class的輸出路徑,默認是在根目錄下的out文件夾中,若是項目中對配置文件的解析等有寫死路徑,必須嚴格遵循Java EE的規範的話,那麼須要將此部分修改以下(若是不存在我假設的狀況可忽略本步驟):
    project_structure_modules_paths
  3. 而後的Dependencies,就更好配置了,添加須要的依賴便可。

這些步驟完成之後咱們就能夠點擊Run > Edit Configurations ,點擊左上角的+號,而後選擇**Tomcat > Local Server **,這些步驟和Eclipse相似,選擇相應路徑等等,只須要注意一點就能夠,就是須要添加一個DeployMent,以下圖:
run_configurations_tomcat

若是是Windows的圖中的DeployMent中的+號多是在右側,點擊以後會彈出對話框選擇文件夾,選擇eclipse默認的webMoudle文件夾便可(MyEclipse就是WebRoot文件夾),這個必定不能選錯,不要選成項目的主文件夾,不然運行就不成功了,再而後ctrl+R運行便可。以debug方式運行就是ctrl+D

使用IntelliJ對Eclipse項目的支持導入項目

基本參照上個基本都相似,就是步驟比上個步驟要少點,若是出現問題參照上個章節便可。

HQL查詢支持

之前Eclipse有個HQL的插件能夠直接輸入HQL語法,查詢測試結果是否正確,在IntelliJ中你也能夠,不過不須要任何插件默認提供支持的,若是在導入項目的時候沒有自動添加Hibernate的支持的話,那須要添加一下Hibernate的支持,鼠標選中項目,點擊右鍵以下圖:
image
點擊選擇Hibernate便可,若是沒有Hibernate應該是項目已經自動添加了Hibernate的支持了。而後完成之後就能夠以下圖操做便可:
image
選中上面HQL圖標,在出來的控制檯輸入你想輸入的HQL便可了,同樣能夠自動完成的哦。

注意事項

  1. IntelliJ對於文件是默認隨時保存的,基本不須要你⌘+s(這個鍵位默認是保存全部),因此須要注意不要隨手不當心把某個文件改了下,而後直接關閉標籤了,其實你的無心的操做已經致使修改了文件,可能致使你在項目運行的時候發現一個很離奇的錯誤,我暫時沒發現能夠關閉自動保存的設置,若是你對此非有強迫症的話,vim的插件可能會幫助到你。
  2. IntelliJ中的文件是實時和本地文件同步的,因此Eclipse的刷新功能就不要問了,由於在這根本不須要那個功能。有的編輯器會提醒你是否和本地文件更新,這裏也是默認不給任何提醒的,只要你修改了,這裏就會當即自動同步更新文件。
  3. 在主菜單File下面,有個奇怪的Power Save Mode,這裏也說明下,這個顧名思義是省電模式。當你勾選此模式之後,IntelliJ不會給你完成任何自動完成的功能,例如原本你輸入一個字符會自動提示的,勾選之後就沒有了,若是出現此問題的話能夠考慮是否是本身手賤點過這個按鈕噢,這個仍是比較適合開會的時候無聊看代碼用的,又省電又不影響你看代碼。
  4. Eclipse中有個F2的功能,能夠查看到Java文件定義,你在Spring的配置文件中可能須要配置這個值,可是在IntelliJ中這個是不須要的,由於對於Spring這樣的支持非常完善,你只須要在class的屬性中輸入class的名字而後ctrl+空格 (Basic 這個在code的completion下面)自動就完成了全路徑,在智能的條件下可能就不須要蹩腳的實現。
  5. 項目剛開始導入或者清除cache從新打開的時候,下面的狀態欄部分會顯示Indexing,這個時候你就等着就能夠了,基本你想作的事情什麼都不能作,別在這個時候着急點來點去,不過它索引的速度挺快的,彆着急。
  6. Eclipse有個Save Actions的功能,主要是針對Java能夠自動格式化以及優化import等功能,這個在IntelliJ上其實默認是沒有的,想在IntelliJ中使用這功能可使用如下兩個思路:
    • 利用宏錄製,宏在開始之後你就格式化下代碼,而後優化下import等操做,而後結束把宏定義一個⌘+s,不過問題就是無論什麼文件都會執行這個宏,不只僅是java文件,我就是利用這個宏主要完成把tab轉爲空格。
    • 使用Eclipse Code Formatter的插件,這個插件基本和Eclipse默認的功能相似,可是也有少量區別,用戶本身思量是否使用便可。
  7. 在Mac下IntelliJ代碼區域是支持手勢放大的,這個在給別人演示的時候非常方便。可是Run、Debug等視圖的時候默認能使想到的就是手動的拖動大小,非常不便。你能夠嘗試下⌘+shift+up/down (Stretch to Top / Bottom),固然其餘的project視圖等的也均可以利用這個快捷鍵配置上下左右的方向鍵來配置使用,方便的很,強烈推薦使用。

幾個技巧

  1. IntelliJ 不多會見到搜索框,其實在沒有搜索框的地方你試試直接輸入拼音,例如你在 Project 的視圖,打開目錄樹之後你直接敲入字母,若是有符合條件的記錄那麼會有高亮顯示的。

最後

第一次發文,若是有什麼問題歡迎留言交流,原始文檔放在github上,各位若是也有一些技巧不妨共同完善下本文檔。只須要Fock而後Pull Request就能夠了,若是你以爲有個github賬號過於麻煩的話,那我我的以爲你仍是轉行比較合適。若是不想更新只是想訂閱持續更新的內容,只須要Watch該項目便可。還能夠對項目Star,這樣你就能夠在本身的賬號頁面快速找到本項目。

 
0
相關文章
相關標籤/搜索