專業(yè)技巧
本指南針對已經(jīng)熟悉其基本功能并希望了解更多的IntelliJ IDEA用戶,如果對IntelliJ IDEA還比較陌生,我們建議您在深入學習之前先閱讀指南。
編碼輔助
輸入信息
如果想了解更多關(guān)于插入符號的信息,例如它來自哪里或者它的類型是什么,您可以按Ctrl+Q打開,此時可以看到一個帶有這些詳細信息的彈出窗口,如果您不需要完整的信息,那么可以使用Type info操作:它只顯示所選表達式的類型,但不會占用太多的屏幕空間。
代碼完成大小寫敏感性
默認情況下,IntelliJ IDEA代碼完成大小寫敏感性僅影響您鍵入的第一個字母,這該策略可以在 Editor | General | Code Completion 頁面的設(shè)置對話框(Ctrl+Alt+S)中更改,您可以在其中使IDE對所有字母敏感。
在這里,您還可以在輸入時關(guān)閉顯示建議選項,如果您希望代碼完成彈出框僅在用時顯示,則這是有意義的。
禁用插入符號處元素的突出顯示用法
談到您在更好地學習了IntelliJ IDEA后可能想要更改的默認值,我們不能錯過的是將Highlight on Caret Movement設(shè)置在Editor | Code Editing中。如果您知道Ctrl+Shift+F7快捷鍵,并且不喜歡每次移動插入符號時編輯器中的突出顯示出現(xiàn)或消失,您可以關(guān)閉插入符選項中元素的用法。
CamelHumps
默認情況下,當您在編輯器中選擇任何內(nèi)容時,IntelliJ IDEA對單詞的大小寫是不敏感的,例如您喜歡根據(jù)CamelCase選擇單詞,而不是選擇整個單詞,而是選擇它的一部分,這樣就可以在設(shè)置對話框的Editor | General | Smart Keys中啟用此功能。
Hippie completion
IntelliJ IDEA通過Ctrl+Space提供,通過Ctrl+Shift+Space提供智能類型匹配的補全,以及通過Ctrl+Shift+Enter提供。所有這些特性都是基于對代碼結(jié)構(gòu)的實際理解。然而有時您可能需要一個更簡單也更靈活的邏輯,它將提示當前文件甚至項目中前面使用的單詞,而不考慮它們的上下文,這個功能被稱為,可以通過Alt+/鍵獲得。
Refactorings
Undo refactorings
有了IntelliJ IDEA,您在重構(gòu)代碼時就不需要擔心后果,因為可以通過方便的Ctrl+Z快捷鍵調(diào)用來撤銷任何事情。
提取字符串片段
IntelliJ IDEA不僅可以重構(gòu)可執(zhí)行代碼還可以重構(gòu)字符串,選擇字符串的任何片段,調(diào)用Extract variable/constant/field/parameter將其作為常量提取并替換它在整個代碼中的用法。
類型遷移
在重構(gòu)時,通常會重命名符號,或者提取和移動代碼中的語句,然而重構(gòu)不僅僅是這些,例如可通過Ctrl+Shift+F6)允許您更改變量、字段、參數(shù)或方法返回值的類型(int→String、int→Long等),更新依賴代碼,并解決可能的沖突。
Invert boolean
如果IntelliJ IDEA可以自動化類型遷移,為什么不能在語義上做同樣的事情呢?如果要反轉(zhuǎn)布爾符號的所有用法,只需使用。
代碼分析
依存結(jié)構(gòu)
IntelliJ IDEA允許您分析代碼中組件之間的依賴程度,您需要對此保持關(guān)注,因為當存在太多依賴時,很可能會導致各種問題。操作(可通過Analyze菜單獲得)將幫助您可視化和探索模塊、包和類之間的依賴關(guān)系。
盡管它看起來很復(fù)雜,但它是一個非常易于使用的工具,只需要選擇一個類或包,看看它在哪里被使用以及它使用了什么。
結(jié)構(gòu)搜索和更換
結(jié)構(gòu)搜索和替換或SSR,是非常強大的(在您學會正確使用它之后),并且可以用于靜態(tài)代碼分析和重構(gòu)自動化,簡而言之它允許您搜索代碼中的特定模式,并用參數(shù)化模板替換它們,為此它配備了自己的語言來定義代碼模式,本文將對此進行更詳細的描述:
要訪問此功能,請使用 Edit | Find | Search/Replace Structurally....如果您想創(chuàng)建模板或模式,請進入設(shè)置對話框,單擊并在常規(guī)節(jié)點下啟用結(jié)構(gòu)搜索檢查:
用戶界面
禁用面包屑和標記樹突出顯示
如果使用了大量的HTML和XML并且希望避免不必要的干擾,您可以在Editor | General | Breadcrumbs上讓禁用面包屑和標記樹突出顯示。
禁用不必要的gutter圖標
Gutter是最左邊的編輯器列,通常顯示一些正在編輯的代碼相關(guān)的有用信息。如果您覺得它有時太多了,可以設(shè)置對話框(Ctrl+Alt+S)中配置想看到的:Editor | General | Gutter Icons。
Search Everywhere
使用時可以在任何地方找到任意的文本片段:在您的代碼、庫、部分UI、設(shè)置(通過在設(shè)置名稱前加上/),甚至動作名稱中,如果經(jīng)常使用這個功能,只需在彈出窗口中按下enter鍵就可以訪問IntelliJ IDEA設(shè)置。例如這里我們正在訪問編輯器設(shè)置:
如果用/plugins開始搜索查詢,您可以打開和關(guān)閉它們:
其他標簽包括: /appearance, /system, /inspections, /registry, /intentions, /templates, and /vcs。
Search Everywhere支持縮寫,您可以使用Keymap頁面的設(shè)置對話框分配一個簡短的文本給任何動作。
然后通過輸入以下文本從Search Everywhere調(diào)用此操作:
隱藏編輯器選項卡
當您需要關(guān)閉除當前選項卡之外的所有編輯器選項卡時,單擊當前選項卡上的關(guān)閉按鈕并按住Alt鍵關(guān)閉圖標:
如果您不想看到編輯器選項卡,請轉(zhuǎn)到編輯器設(shè)置的頁面,并在Placement處下拉菜單中選擇None。
在新窗口打開文件
有一個功能很方便,那就是在項目工具窗口中選擇文件并按Shift+Enter,就可以在新窗中打開文件。
在工具欄添加停止和恢復(fù)按鈕
在導航欄的工具欄中添加Stop按鈕和 Resume按鈕可能會很方便,您可以通過設(shè)置對話框的頁面進行設(shè)置。
如果您更喜歡使用鼠標而不是鍵盤快捷鍵,那么這樣您就不需要打開Debug工具窗口來管理當前的調(diào)試會話。
編輯器
與剪貼板比較
IntelliJ IDEA有一個內(nèi)置的Diff查看器,用于代碼、jar文件、修訂甚至圖像,要調(diào)用它可以選擇任意一對文件并按Ctrl+D。
如果您選擇了單個文件,IDE將提示選擇要比較的文件,要快速比較活動編輯器與剪貼板,請選擇View | Compare with Clipboard。
從歷史中粘貼
說到剪貼板,IntelliJ IDEA可以跟蹤您放在那里的所有內(nèi)容,任何時候想要粘貼一個先前復(fù)制的項目請按Ctrl+Shift+V。
多選
是一個相對較新的、非常強大的編輯器功能,它允許您一次性快速地選擇和編輯多個(相鄰或不相鄰的)代碼片段。
簡而言之事情是這樣的,您可以從按Alt+J開始(然后IntelliJ IDEA選擇插入符號),或者可以像往常一樣選擇一些東西。然后按Alt+J, IntelliJ IDEA將向前搜索當前文件,直到找到匹配的文本片段,并將其添加到選區(qū)中,您可以再次按Alt+J前進或按Alt+Shift+J后退,但請注意當搜索到文件的末尾時,它將從文件的開頭重新開始。
選擇完成后,您可以開始編輯所有片段,就像它們是一個片段一樣。
提示:另一種克隆插入符號的方法是按Ctrl兩次,然后用箭頭或鼠標上下移動插入符號。
Emmet
是編寫HTML、XML和CSS代碼的好方法,IntelliJ IDEA支持:編寫Emmet表達式并按Tab鍵展開它。
使用Emmet預(yù)覽操作(可通過查找操作或搜索無處不在-所以請確保將其分配給方便的快捷方式)來查看結(jié)果代碼的預(yù)覽。
Regex
Regex功能強大,使用廣泛,但有時很難正確地編寫它們。IntelliJ IDEA將幫助您檢查代碼中的任何Regex,只需在它上面放置插入符號并按Alt+Enter來使用:
查找并使用Regex組替換
IntelliJ IDEA幫助Regex的另一個地方是,值得知道的是它支持替換表達式中的捕獲組。
字節(jié)碼查看器
有時候,看到程序生成的實際字節(jié)碼是非常深刻的。
在IntelliJ IDEA中,您可以通過View | Show Bytecode來做到這一點。
版本控制
更改
在中,IntelliJ IDEA提供了執(zhí)行各種操作的功能,其中之一是修正提交,當您想要更改上次提交并將當前更改加入其中時,它非常有用。
Shelves and patches
Shelves是一個類似于的IDE特性,但是它適用于所有的VCS:當您需要暫停當前的工作并從存儲庫中取出一些東西來盡快修復(fù)它,然后再繼續(xù)正在做的任何工作時,它都有幫助。該特性在不提交的情況下處理本地更改的文件,因此不會再丟失更改或匆忙進行合并提交。
Patches 允許您將一組更改保存到文本文件中,然后應(yīng)用于代碼,這些文件可以通過電子郵件(或任何其他古老的媒體)傳輸。當您的飛機墜毀在荒島上,或者陷入了沒有可靠寬帶連接的境地,真的需要做點什么時這個就派上了用場。
調(diào)試
Non-suspending斷點
有時您可能希望在不掛起程序的情況下對特定代碼行求值,可以通過使用非掛起斷點來實現(xiàn)這一點,要創(chuàng)建一個表達式,只需單擊按住Shift的滑槽,并在Evaluate and log字段中輸入表達式。
這樣您就可以更改或記錄應(yīng)用程序狀態(tài),而無需在項目代碼中插入額外的語句,這在調(diào)試無法更改的已編譯類時特別有用。
斷點或字段監(jiān)測點
除了上面提到的操作斷點之外,您還可以使用Field觀察點。當訪問與該斷點關(guān)聯(lián)的字段時,該斷點將停止執(zhí)行,要創(chuàng)建字段觀察點,只需按住Alt(對于macOS,按Ctrl+Cmd)單擊 gutter。
物體標記
當您調(diào)試應(yīng)用程序時,IntelliJ IDEA允許用彩色標簽標記任意對象的特定實例,以便標記對象操作(在Evaluate Expression, Variables或Watches視圖中可用)更容易識別。
如果您有任何用標簽標記的實例,也可以在條件表達式中使用它:
自定義數(shù)據(jù)呈現(xiàn)器
,,和都使用一種標準的方式來呈現(xiàn)變量值,主要基于類的toString實現(xiàn),并不是每個人都知道您是可以為任何類定義自己的自定義渲染器的,因此在中的上下文菜單中應(yīng)該選擇Customize Data Views。
當您正在使用的庫中的一些類沒有提供有意義的toString實現(xiàn)時,這個方法特別有用——因此您可以在庫之外自己定義它。
降幀
如果想在調(diào)試時“回到過去”,您可以通過Drop Frame動作來實現(xiàn),如果錯誤走得太遠這將是一個很大的幫助,這不會恢復(fù)應(yīng)用程序的全局狀態(tài),但至少會讓您通過幀堆棧返回。
強制返回
另一種方法是,如果您希望跳轉(zhuǎn)到未來,并強制從當前方法返回而不執(zhí)行任何其他指令就請使用force return操作(要調(diào)用它,請按Ctrl+Shift+A并鍵入操作名稱),如果該方法返回一個值,則必須指定它。
DCEVM
有時,當您對代碼進行快速更改時,您可能希望立即看到它們在工作的應(yīng)用程序中的行為。但不幸的是,Java HotSwap VM有很多限制:例如您不能向類添加新方法或字段并執(zhí)行熱插拔;在熱插拔期間唯一可以更改的就是方法體。
幸運的是,有一種方法可以改變這種情況,即新的開源項目Dynamic Code Evolution VM,這是對Java HotSwap VM的修改,可以無限地支持在運行時重新加載類。
通過專用插件,在IntelliJ IDEA中使用它就很容易,當啟用插件時,IDE將為您的環(huán)境提供下載DCEVM JRE的服務(wù),然后您必須在可選jre列表中選擇它。
更新應(yīng)用程序
如果要在應(yīng)用服務(wù)器(Tomcat、JBoss等)上運行應(yīng)用程序,可以通過Ctrl+F10使用Update應(yīng)用程序操作重新加載更改的類和資源嗎?
工具
外部工具
IntelliJ IDEA有許多集成的開發(fā)工具,可以開箱即用。如果您需要的工具沒有集成,但想通過快捷方式使用它,請轉(zhuǎn)到設(shè) Settings | Tools | External Tools并配置如何運行此工具。然后就可以通過Tools | External Tools主菜單運行這個工具了。