因為本節的內容是介紹使用 IntelliJ IDEA 的一些專業技巧,是為了幫助已經熟悉 IntelliJ IDEA 基本功能的用戶來了解并掌握有關 IntelliJ IDEA 的更多信息,所以在學習本節內容之前您需要對 IntelliJ IDEA 有了一定的了解。
如果您對IntelliJ IDEA相對較新,我們建議您先閱讀IntelliJ IDEA的使用。
如果你想要更多的關于符號的信息,例如從哪里或它的類型是什么, 快速文檔可以很好的幫到您,您可以按下 Ctrl+Q 來調用它,然后你會看到一個包含這些細節的彈出窗口。如果您不需要完整信息,請改為使用 “Type Info” 操作:它僅顯示所選表達式的類型,但不占用大量的屏幕空間。
默認情況下,IntelliJ IDEA 代碼完成區分大小寫僅影響您鍵入的第一個字母。這個策略可以在 “設置/首選項” 對話框中更改, Editor | General | Code Completion,所以你可以使 IDE 對所有的字母敏感,或者使它對所有的情況不敏感,這是基于什么更適合你的喜好。
熱點提示: 在這里您也可以關閉 Autopopup 代碼完成選項。如果您希望代碼完成彈出菜單僅在顯式調用時顯示,這樣的設置是有意義的。
談到默認值,您可能想要在更好地學習 IntelliJ IDEA 后對其進行改變,我們不能錯過在 "設置/首選項" 對話框的 Editor | General 頁存在的 “在插入符號時突出顯示元素” 的用法。如果您知道 Ctrl+Shift+F7 快捷方式,并且不喜歡編輯器中的突出顯示用法,每次只需移動插入符號即可顯示并消失,則不需要此選項。
默認情況下,當您在編輯器中選擇任何內容時,IntelliJ IDEA 對單詞的大小寫不敏感。如果您喜歡根據 CamelCase 選擇單詞,例如,選擇其中的一部分,而不是選擇整個單詞,您可以在 "設置/首選項" 對話框中的 Editor | General | Smart Keys 中啟用該功能。
IntelliJ IDEA 通過 Ctrl+Space 提供 Basic completion,通過 Ctrl+Shift+Space 提供Smart completion,和通過 Ctrl+Shift+Enter 提供 Statement completion。所有這些功能都是基于對代碼結構的實際理解。然而,有時候,您可能需要一個更為微不足道的靈活邏輯,可以提示當前文件中甚至項目中使用的單詞,無論其上下文如何。此功能叫 Hippie completion 并且通過 Alt+Slash 調用。
使用 IntelliJ IDEA,您無需擔心重構代碼時的后果,因為您可以隨時通過便捷的 Ctrl+Z 快捷方式調用 Undo 來撤消任何內容。
IntelliJ IDEA不僅可以重構可執行代碼,還可以重寫字符串。選擇字符串的任何片段,調用提取變量/常量/字段/參數以將其作為常量提取,并在整個代碼中替換其用法。
當您重構時,通常會重新命名符號,或者在代碼中提取和移動語句。然而,還有更多的重構,而不僅僅是這樣。例如,類型遷移(可通過 Ctrl+Shift+F6 提供)允許您更改變量,字段,參數或方法的返回值(int → String,int → Long,等)的類型,更新相關的代碼,并解決可能發生的沖突。
如果 IntelliJ IDEA 可以自動進行類型遷移,為什么不對語義做相同的操作?如果要反轉一個布爾符號的所有用法,只需使用反轉布爾重構。
IntelliJ IDEA 可以讓您分析代碼中組件的緊密程度如何,您需要關注這一點,因為當存在太多的依賴項時,可能會導致各種各樣的 問題。 依賴關系矩陣操作(可通過 “分析” 菜單提供)將幫助您可視化并探索模塊,軟件包和類之間的依賴關系。
盡管復雜的外觀,它是一個非常易于使用的工具。只需選擇一個類或包,看看它在哪里使用和使用它來做什么。
結構搜索和替換(SSR)是相當強大的 (在您學會正確使用它之后),并且可以用于靜態代碼分析和重構自動化。簡而言之,它允許您在代碼中搜索特定的模式,并使用參數模板替換它們。為此,它配備了自己的語言來定義代碼模式,本文將對此進行更詳細的描述。
要訪問此功能,請使用 "Edit | Find | Search/Replace Structurally....”。如果要創建模板或模式,請轉到 "設置/首選項" 對話框, 單擊 Editor | Inspections頁面,并在 General node 下啟用 Structural Search Inspection:
如果您使用了大量的 HTML 和 XML,并希望避免不必要的干擾,您可能需要在 Editor | General | Appearance 中禁用面包屑和標簽樹突出顯示。
最左側的編輯器列 Gutter 通常顯示與您正在編輯的代碼相關的有用信息。如果您覺得有時只是太多,您可以在 “設置/首選項” 對話框中配置要查看的內容 Editor | General | Gutter Icon。
還有一件事可能是煩人的,就是每次在插入符號處有意圖時,編輯器中出現的意圖燈泡。禁用它有點困難:您需要手動編輯您的 <IntelliJ IDEA preferences folder>/options/editor.xml,并添加以下行:
<option name="SHOW_INTENTION_BULB" value="false" />
4.使用Search Everywhere
使用 Search Everywhere, 您可以從字面上找到任意文本片段: 在代碼、庫、UI 的某些部分、設置 (通過將設置名稱與 #),甚至是操作名稱。如果你經常使用這個功能,那就值得知道,你可以通過在彈出窗口中按 Enter 鍵來訪問 IntelliJ IDEA 的設置。例如,我們在這里訪問編輯器設置:
如果您開始搜索查詢#plugins,您可以打開和關閉它們:
其它標簽包括 #appearance,#system,#inspections, #registry,#intentions,#templates和#vcs。
另一個有趣的事實是,Search Everywhere 支持縮寫。您可以使用 “設置/首選項” 對話框的 “Keymap” 頁面為任何操作分配一個短文本,然后通過輸入以下文本從 “Search Everywhere” 中調用此操作:
當您需要關閉除當前選項卡之外的所有編輯器選項卡時,點擊 “X” 圖標并按住 Alt 鍵來關閉當前標簽:
如果您不想看到編輯器標簽,請轉到 編輯器選項卡 頁面的編輯器設置/首選項并在展示位置的下拉菜單中選擇無。
一個不是很容易找到的功能,但也是有用的,它通過在 "Project Tool Window" 中選擇一個文件并單擊 "Shift + Enter" 在新窗口中打開。
路徑完成可以幫助您加快文件,文件夾等的選擇。在 "項目結構" 對話框中添加新的 SDK 或指定應用程序服務器主目錄時,這很有用。
當您開始輸入路徑時,請按 Ctrl+Space 以調用建議列表:
將 Stop和Resume
按鈕添加到工具欄可能很方便導航欄的操作。你可以通過"設置/首選項" 對話框的 Appearance and Behavior | Menus 和 Toolbars 頁面做到這點。
如果您喜歡使用鼠標而不是鍵盤快捷鍵,則不需要打開調試工具窗口來管理當前的調試會話。
IntelliJ IDEA有一個內置的 Diff 查看器,用于代碼、jar文件、修訂甚至于圖像。要調用它,請選擇任意一對文件,然后按 Ctrl+D。
如果您選擇了單個文件,IDE 將提示您選擇要比較的文件。要快速比較活動編輯器與剪貼板,請選擇 View | Compare with Clipboard。
說到剪貼板,IntelliJ IDEA 跟蹤你在那里的一切。每當您要粘貼以前復制的項目之一時,請按 Ctrl+Shift+V。
多項選擇是一個相對較新的非常強大的編輯器功能,可以讓您快速選擇和編輯多個(相鄰或者不)代碼片段。
簡而言之,這里會發生什么。你要么開始按 Alt+J (然后 IntelliJ IDEA 在插入處選擇一個符號),或者你可以按照通常的方式選擇一些東西。
然后,按 Alt+JIntelliJ IDEA 將向前搜索當前文件,直到找到匹配的文本,并將其添加到選擇中。您可以再次按下 Alt+J 以向前或 Shift+Alt+J 以返回,但請注意,當搜索到達文件結尾時,它將從文件的開頭重新開始。
選擇完成后,您可以開始編輯所有片段,就像它們一樣。
提示:克隆插入符號的另一種方法是按 Ctrl (MacOS 中是 Alt)兩次,然后用箭頭或簡單的鼠標向上或向下移動插入符號。
如果你不知道, Emmet 是編寫 HTML,XML 和 CSS 代碼的好方法。IntelliJ IDEA 支持它開箱即用:只需編寫一個 Emmet 表達式,然后按 Tab 來展開它。
使用 Emmet 預覽操作(可在“查找操作”或“隨處搜索”中使用 - 因此請確保將其分配給方便的快捷方式),以查看生成的代碼的預覽。
正則表達式是強大且廣泛使用的,但有時它們寫得很正確太難了。IntelliJ IDEA 將幫助您檢查代碼中的任何正則表達式:只需將插入符放在其中,然后按 Alt+Enter 使用 檢查正則表達式意圖:
IntelliJ IDEA 幫助 Regex 的另一個地方就是 查找和替換功能。值得一提的是,它支持替換表達式中的捕獲組。
查找和替換也可以從搜索中排除評論和文字:要做到這一點,請使用 “齒輪” 圖標
有時看到程序生成的實際字節碼是非常的 有見地。
在 IntelliJ IDEA 中,您可以隨時通過此操作 View | Show Bytecode 達到。
在 提交更改對話框 中 IntelliJ IDEA 提供執行各種操作。其中之一是修改提交,當您想要更改最后一個提交并加入您當前的更改時,這是有用的。
Shelves 是類似于 Git Stash 的 IDE 功能,但適用于所有 VCS:當您需要暫停當前工作并從存儲庫中提取某些內容以修復它時,幫助您,然后恢復正在進行的任何工作。此功能無需提交本地更改的文件,因此不會再丟失更改或倉促合并提交。
請參閱頁面 Git-Stach 和 Stashing and Unstashing 部分了解更多詳情。
補丁程序允許您將一組更改保存到可通過電子郵件(或任何其他古老媒體)傳輸的文本文件,然后應用于代碼。當你的飛機墜毀在沙漠的島嶼上真的需要做某事時,這是非常有幫助的,或者你以某種方式讓自己處于沒有可靠的寬帶連接的情況下。
有時, 您可能需要在特定的代碼行中進行評估, 而無需實際停止。可以使用方法斷點來執行此項。要創建一個, 只需單擊 gutter 按住 Shift。
這樣,您可以將任何表達式打印到輸出,而無需更改代碼。這在調試庫或遠程應用程序時尤其有用。
除了上述動作斷點之外,您還可以使用 字段觀察點。當與其關聯的字段被訪問時,該斷點將停止執行。要創建現場觀察點,只需點擊 gutter 按住 Alt(macOS 中使用 Ctrl+Cmd)。
當您調試應用程序時,IntelliJ IDEA 允許您使用彩色標簽標記任意對象的特定實例,以便通過該標簽輕松識別 標記對象 動作(可在評估表達, 變量或手表的意見。)
如果你有任何標簽標簽的實例,你也可以在條件表達式中使用它:
評估表達,變量, 手表和 內聯調試器 都使用標準方式來呈現變量值,主要是基于toString類的實現。不是每個人都知道您可以為任何類定義自己的自定義渲染器。為此,選擇 從上下文菜單中自定義數據視圖調試 工具窗口。
當您使用的庫中的某些類不提供有意義的toString實現時,這是非常有用的,因此您可以在庫之外定義它。
如果您想在調試時“及時回來”,可以通過“丟幀”操作來執行此操作。如果你錯誤地走得太遠,這是一個很大的幫助。這不會恢復您的應用程序的全局狀態,但至少會讓您回到一堆幀。
繞過的方式,如果你想跳到未來,強制從當前方法返回,而不執行任何更多的指令,請使用 強制返回動作(調用它,按鍵Ctrl+Shift+A并輸入動作名稱)。如果該方法返回一個值,則必須指定它。
有時,當您快速更改代碼時,您希望立即看到它們將如何在工作的應用程序中運行。不幸的是,Java HotSwap VM有很多限制:您不能說,向類添加新的方法或字段,并執行熱插拔; 在熱插拔中唯一可以改變的是方法體。
請參閱各節 重新加載類和HotSwap 的詳細信息。
幸運的是,有一種方法可以用新的開放源代碼項目Dynamic Code Evolution VM來修改這種情況,這是一個Java HotSwap VM的修改,可以在運行時重新加載類,不受支持。
在IntelliJ IDEA中使用它很容易與專用 插件。啟用插件后,IDE將為您提供為您的環境下載DCEVM JRE。那么你必須在替代JRE列表中選擇它。
如果您在應用程序服務器(例如Tomcat,JBoss等)上運行應用程序,則可以使用Update應用程序操作重新加載更改的類和資源 Ctrl+F10。
IntelliJ IDEA有許多開發人員工具集成和開箱即用。如果您需要的工具不是集成的,但是您希望通過快捷方式使用它,請轉到 設置/首選項| 工具| 外部工具,并配置如何運行此工具。然后你可以通過這個工具來運行這個工具 工具| 外部工具主菜單。