IntelliJ IDEA如何自動完成代碼

2018-10-23 14:54 更新

本節(jié)介紹了上下文感知代碼完成的各種技術(shù),使您能夠加快編碼過程。

基本代碼完成:完成名稱和關(guān)鍵字

基本代碼完成可以幫助您在可見性范圍內(nèi)完成類、方法、字段和關(guān)鍵字的名稱。當(dāng)您調(diào)用代碼完成時,IntelliJ IDEA 分析上下文并提出從當(dāng)前插入符位置可訪問的選項。

代碼完成涵蓋支持和自定義的文件類型。然而,IntelliJ IDEA 無法識別自定義文件類型的結(jié)構(gòu),并建議完成選項,而不管特定類型是否適合當(dāng)前上下文。

如果將基本代碼完成應(yīng)用于字段、參數(shù)或變量聲明的一部分,IntelliJ IDEA 會根據(jù)項目類型建議可能的名稱列表。

第二次調(diào)用基本代碼完成顯示了通過模塊依賴關(guān)系提供的類的名稱。 

Note:"基本完成建議" 列表中也會顯示 "實時模板"。

當(dāng)再次調(diào)用(連續(xù)第三次)時,建議列表將擴展到整個項目,而不考慮依賴關(guān)系如何。此操作將完成通過整個項目搜索的類和接口的名稱。如果所需的類尚未導(dǎo)入,則將自動導(dǎo)入它。 

Tip:您可以將 IntelliJ IDEA 配置為自動調(diào)用“建議”列表,而無需顯式調(diào)用基本完成。要做到這一點,請在主菜單中選擇文件| 設(shè)置(或按 Ctrl+Alt+S),在左側(cè)選擇:編輯| 一般| 代碼( Editor | General | Code Completion)完成,并選擇 Autopopup 代碼完成選項。
您也可以選擇通過輸入點、空格等來插入選定的變體。選擇使用一些鍵來接受完成。這些鍵取決于語言、上下文等。
對于 Java,這樣的鍵包括 Space、Tab、[ 和  ],( 和 ),和更多的鍵。
請注意,雖然此設(shè)置可幫助您節(jié)省時間,但將其打開可能會導(dǎo)致項目被意外插入。

使用基本代碼完成的步驟如下:

  1. 開始輸入名稱。
  2. 按 Ctrl+Space 或從主菜單選擇:代碼| 完成| 基本(Code | Completion | Basic)。
    IntelliJ IDEA使用基本代碼完成
  3. 如有必要,請再次按下:Ctrl+Space(此操作將產(chǎn)生與按下 Ctrl+Alt+Space 相同的效果)。這顯示了通過模塊依賴關(guān)系可用的所有類。第二個完成也顯示靜態(tài)字段和方法。
    IntelliJ IDEA使用基本代碼完成
    當(dāng)?shù)谌握{(diào)用時,基本代碼完成將建議列表擴展到整個項目中的所有類,而不考慮依賴關(guān)系。

智能代碼完成:基于類型信息完成代碼

智能代碼完成“篩選”建議列表,僅顯示適用于當(dāng)前上下文的類型。

智能代碼完成在可以確定適當(dāng)類型的情況下很有用:

  •  在賦值語句的右側(cè)部分
  •  在變量初始值設(shè)定項中
  •  在 return 語句中
  •  在方法調(diào)用的參數(shù)列表中
  •  在對象聲明中的 new 關(guān)鍵字之后
  • 在鏈?zhǔn)奖磉_(dá)式中

使用智能代碼完成的步驟如下:

  1. 開始輸入;按 Ctrl+Shift+Space 或從主菜單選擇:代碼| 完成| SmartType (Code | Completion | SmartType)。SmartType 代碼完成會自動突出顯示最適合當(dāng)前上下文的建議列表中的選擇。例如,在 Java 中的 new 關(guān)鍵字之后考慮智能類型代碼完成:
    這僅適用于 Java,并且需要使用 IntelliJ IDEA 編譯器(而不是 Gradle 編譯器)生成項目。對于鏈?zhǔn)奖磉_(dá)式,建議按項目中使用的頻率進(jìn)行排序。當(dāng)任何建議的方法調(diào)用都接受上下文中尚不可用的參數(shù)時,選擇IDE后,IDE將定義所需類型的局部變量。
  2. 如有必要,請再按 Ctrl+Shift+Space 一次。這可以讓您完成一下操作:集合、列表和數(shù)組。IntelliJ IDEA 搜索具有相同組件類型的符號,并建議轉(zhuǎn)換它們。靜態(tài)方法調(diào)用或常量引用。IntelliJ IDEA 掃描靜態(tài)方法和字段,并建議在當(dāng)前上下文中適用的那些靜態(tài)方法和字段。

完成聲明

通過智能輸入完成,使您能夠創(chuàng)建語法正確的代碼結(jié)構(gòu)。

要自動完成語句,請開始鍵入它并按 N/A。添加當(dāng)前上下文中所需的標(biāo)點符號,插入符號移動到下一個編輯位置。

  • 完成方法聲明:開始鍵入方法聲明并在開始括號后按 N/A:
    IntelliJ IDEA完成方法聲明
    這將創(chuàng)建一個方法的整個構(gòu)造,在方法體內(nèi)停留的插入符號:
    IntelliJ IDEA完成方法聲明
  • 完成代碼結(jié)構(gòu):開始鍵入代碼結(jié)構(gòu),然后按 N/A:
    IntelliJ IDEA完成代碼結(jié)構(gòu)
    IntelliJ IDEA 自動完成構(gòu)造,插入符號位于下一個編輯位置:
    IntelliJ IDEA完成代碼結(jié)構(gòu)
  • 自動封裝:當(dāng) IntelliJ IDEA 直接在其旁邊鍵入新的方法調(diào)用時,自動封裝方法調(diào)用。例如,鍵入 "test",然后鍵入方法調(diào)用。當(dāng) println 獲得建議列表中的焦點時,請使用 N/A 選擇它:
    IntelliJ IDEA自動封裝
    結(jié)果代碼將如下所示:
    System.out.println("test");

完成標(biāo)簽名稱

IntelliJ IDEA 自動完成以下文件類型中的標(biāo)簽和屬性名稱和值:

  • HTML / XHTML
  • XML / XSL
  • JSP / JSPX

自動標(biāo)簽名稱完成是基于與該文件相關(guān)聯(lián)的 DTD 或 Schema。

如果沒有模式關(guān)聯(lián),IntelliJ IDEA 將使用文件內(nèi)容(標(biāo)簽和屬性名稱及其值)來完成輸入。

在 XML / XSL 和 JSP / JSPX 文件中,taglib 和命名空間的完成可用。

完成標(biāo)簽名稱

  1. 按下 < 并開始輸入標(biāo)簽名稱。IntelliJ IDEA 顯示當(dāng)前上下文中適當(dāng)?shù)臉?biāo)簽名稱列表。使用 ArrowUp 和 ArrowDown 按鈕滾動列表。
  2. 按 Enter 可從列表中接受選擇。IntelliJ IDEA 根據(jù)模式自動插入必需屬性。

插入 taglib 聲明

  1. 開始輸入一個標(biāo)簽并按 Ctrl+Alt+Space。
  2. 從列表中選擇一個標(biāo)簽。它所屬的 taglib 的 uri 顯示在方括號中。
    IntelliJ IDEA插入 taglib 聲明
  3. 選擇所需的 taglib 并按 Enter。IntelliJ IDEA 添加所選 taglib 的聲明:
    IntelliJ IDEA插入 taglib 聲明

導(dǎo)入 taglib 聲明

  1. 開始輸入 taglib 前綴,然后按 Alt+Insert。
  2. 從列表中選擇一個 taglib,然后按 Enter。
      IntelliJ IDEA導(dǎo)入 taglib 聲明
    IntelliJ IDEA 導(dǎo)入所選的 taglib 并自動添加 import 語句。

Hippie 完成:基于上下文擴展單詞

Hippie 完成是一個完成引擎,它可以在可視范圍內(nèi)分析您的文本,并從當(dāng)前的背景中提取完成提案。它可以幫助您用關(guān)鍵字、類名、方法或變量填寫完成一個單詞。

要將插入符號的字符串?dāng)U展到現(xiàn)有單詞,請執(zhí)行以下操作:

  1. 鍵入初始字符串并執(zhí)行以下操作之一:
    • 按 Alt+Slash 或選擇代碼| 完成| 循環(huán)展開 Word(Code | Completion | Cyclic Expand Word)在插入符號之前搜索匹配的單詞
    • 按 Shift+Alt+Slash 或選擇代碼| 完成| 循環(huán)展開 Word(向后)(Code | Completion | Cyclic Expand Word (Backward)) 在插入符號和其他打開的文件之后搜索匹配的單詞。
      將顯示第一個建議的值,并在源代碼中突出顯示原型:
      Hippie 完成:基于上下文擴展單詞
    • 按 Enter 接受該建議,或按住 Alt 鍵并按住 Slash 直到找到所需的單詞。

Postfix 代碼完成

Postfix 代碼完成幫助您在編寫代碼時減少向后插入符跳轉(zhuǎn)。它允許您根據(jù)您在點之后鍵入的后綴、表達(dá)式的類型及其上下文將已鍵入的表達(dá)式轉(zhuǎn)換為不同的表達(dá)式。

例如,如果對表達(dá)式應(yīng)用了.if 后綴,則將其使用 if 語句包裝。

未使用 if 語句包裝之前:

function m(arg) {
arg.if
}

使用 if 語句包裝:

function m(arg) {
if (arg) {

}
}

要啟用/禁用后綴完成功能或單獨的模板,請在 "設(shè)置/首選項" 對話框中,轉(zhuǎn)到編輯器| 一般| Postifx 完成(Editor | General | Postifx completion)。您也可以選擇你要使用哪個鍵來擴展后綴模板: Tab、Space 或 Enter。

Postfix 完成建議作為基本完成建議列表的一部分顯示。要查看適用于當(dāng)前上下文的完整的后綴完整列表,請按 Ctrl+J。

完成代碼的提示和技巧

縮小建議列表

您可以通過鍵入單詞的任何部分(甚至是中間某處的字符)縮小建議列表的范圍,或者在點分隔符之后調(diào)用代碼完成。IntelliJ IDEA 將顯示包括您在任何位置輸入的字符的建議。

這使得通配符的使用是不必要的:

Intelli J IDEA縮小建議列表

在 CamelCase 或 snake_case 名稱的情況下,僅鍵入初始字母。IntelliJ IDEA 自動識別并匹配初始字母。

接受建議

您可以通過以下方式之一接受列表中的建議:

  • 按 Enter 或雙擊所需的選項將從插入符號左側(cè)完成插入。
  • 按 Tab 可將字符從插入符號向右替換。
  • 使用 N/A 使當(dāng)前代碼構(gòu)造語法正確(平衡括號,添加缺少的大括號和分號等)

否定表達(dá)式

從建議列表中選擇后,您可以通過按下 ! 來否定 Java 中的表達(dá)式:

IntelliJ IDEA否定表達(dá)式

表達(dá)將被否定:

IntelliJ IDEA否定表達(dá)式

如果在 "代碼完成設(shè)置" 頁中啟用了 "插入點"、"空格" 等選項來插入選定的變體代碼完成設(shè)置頁面,或顯式調(diào)用代碼完成,或者顯式更改 "建議" 列表中的選定內(nèi)容, 則否定表達(dá)式的工作方式。

查看參考信息

  • 當(dāng)您在 "建議" 列表中選擇一個條目時,可以通過按 Ctrl + Shift + I 來使用 "快速定義" :
    IntelliJ IDEA查看參考信息
  • 在 "建議" 列表中選擇一個條目時,可以通過按 Ctrl + Q 來使用 "快速信息" :
    IntelliJ IDEA查看參考信息

在建議列表中排序條目

IntelliJ IDEA 排序圖標(biāo)僅在列表較長且不顯示僅包含少數(shù)條目的列表時才會出現(xiàn)。

您可以按照字母順序或相關(guān)性對建議列表進(jìn)行排序。要在這些模式之間切換,請單擊 ,它們分別位于列表的右下角。

IntelliJ IDEA 將記住您的選擇。您可以在 "代碼完成設(shè)置" 頁中更改默認(rèn)行為。

查看代碼層次結(jié)構(gòu)

當(dāng)您從建議列表中選擇一個條目時,您可以查看代碼層次結(jié)構(gòu):

  • 按 Ctrl+H 查看類型層次結(jié)構(gòu);
  • 按 Ctrl+Alt+H 查看調(diào)用層次結(jié)構(gòu);
  • 按 Ctrl+Shift+H 查看方法層次結(jié)構(gòu)。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號