IntelliJ IDEA如何自動(dòng)完成代碼

2018-10-23 14:54 更新

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

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

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

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

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

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

Note:"基本完成建議" 列表中也會(huì)顯示 "實(shí)時(shí)模板"。

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

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

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

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

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

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

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

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

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

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

完成聲明

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

要自動(dòng)完成語(yǔ)句,請(qǐng)開(kāi)始鍵入它并按 N/A。添加當(dāng)前上下文中所需的標(biāo)點(diǎn)符號(hào),插入符號(hào)移動(dòng)到下一個(gè)編輯位置。

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

完成標(biāo)簽名稱

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

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

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

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

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

完成標(biāo)簽名稱

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

插入 taglib 聲明

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

導(dǎo)入 taglib 聲明

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

Hippie 完成:基于上下文擴(kuò)展單詞

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

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

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

Postfix 代碼完成

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

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

未使用 if 語(yǔ)句包裝之前:

function m(arg) {
arg.if
}

使用 if 語(yǔ)句包裝:

function m(arg) {
if (arg) {

}
}

要啟用/禁用后綴完成功能或單獨(dú)的模板,請(qǐng)?jiān)?"設(shè)置/首選項(xiàng)" 對(duì)話框中,轉(zhuǎn)到編輯器| 一般| Postifx 完成(Editor | General | Postifx completion)。您也可以選擇你要使用哪個(gè)鍵來(lái)擴(kuò)展后綴模板: Tab、Space 或 Enter。

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

完成代碼的提示和技巧

縮小建議列表

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

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

Intelli J IDEA縮小建議列表

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

接受建議

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

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

否定表達(dá)式

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

IntelliJ IDEA否定表達(dá)式

表達(dá)將被否定:

IntelliJ IDEA否定表達(dá)式

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

查看參考信息

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

在建議列表中排序條目

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

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)