IDEA自定義后綴模板

IDEA擁有優(yōu)秀的代碼補(bǔ)全功能。除此之外,還擁有動(dòng)態(tài)模板(Live Templete)和后綴補(bǔ)全(Postfix Completion)功能,讓編碼更簡(jiǎn)單。

本篇文檔以Java為例,帶你領(lǐng)略后綴補(bǔ)全和動(dòng)態(tài)模板的魅力。

后綴補(bǔ)全和動(dòng)態(tài)模板

IDEA在2021年1月的版本上線了自定義后綴補(bǔ)全的功能,在此之前,只能使用預(yù)定義好的補(bǔ)全模板。不過(guò)現(xiàn)在功能還不甚完善,一些小細(xì)節(jié)沒(méi)處理好,但是比起自定義動(dòng)態(tài)模板,后綴補(bǔ)全更符合操作邏輯,也更方便。

動(dòng)態(tài)模板

動(dòng)態(tài)模板即輸入一段縮寫(xiě),然后按下enter后會(huì)自動(dòng)根據(jù)前后文生成對(duì)應(yīng)的代碼,主要用于方法、類、表達(dá)語(yǔ)句內(nèi)。動(dòng)態(tài)模板中的變量會(huì)根據(jù)定義,自動(dòng)獲取上下文中的類名、方法名等,從而自動(dòng)生成代碼。

動(dòng)態(tài)模板

例如,寫(xiě)下sout即可生成System.out.println();。甚至可以通過(guò)配置動(dòng)態(tài)模板自動(dòng)生成Swagger注釋:https://blog.csdn.net/weixin_40596063/article/details/90897864

優(yōu)點(diǎn)

  • 適合快速生成大段代碼。
  • 適合用在起始語(yǔ)句中,如if、for、main等。

缺點(diǎn)

  • 不適合先寫(xiě)變量,之后再補(bǔ)全的情況。這種情況就十分適合后綴補(bǔ)全。

后綴補(bǔ)全

后綴補(bǔ)全是指在輸入變量或代碼串后,通過(guò).等方式,按下tab/space/enter來(lái)快速生成代碼的方式。例如我們非常常見(jiàn)的"字符串".sout就會(huì)生成代碼System.out.println("字符串");。

后綴補(bǔ)全

自定義后綴補(bǔ)全

通過(guò)自定義,我們也可以擁有自己的后綴模板。

以下以“輸入toMap后補(bǔ)全代碼為.stream().collect(Collections.toMap());”為例,設(shè)置一個(gè)自定義的后綴補(bǔ)全。該例子能夠讓一個(gè)列表類型的變量轉(zhuǎn)換為一個(gè)Map。

第一步

打開(kāi)后綴補(bǔ)全設(shè)置(Editor | General | Postfix Completion),點(diǎn)擊加號(hào)新增一個(gè)Java后綴補(bǔ)全:


后綴補(bǔ)全設(shè)置

第二步

在key處設(shè)置后綴,支持語(yǔ)言最低版本具體選擇。因?yàn)楸纠蠸tream接口是Java 8才支持,故我們選擇8版本。之后點(diǎn)擊加號(hào),設(shè)置要以哪種類型的變量作為后綴匹配的匹配變量。從上到下依次是:

  • void
  • 非void
  • 布爾類型
  • 數(shù)字類型
  • 非基本類型(即除了基本類型包裝類外的對(duì)象)
  • 數(shù)組(不包括List、Set)
  • 在項(xiàng)目中選取類
  • 輸入類名(需要輸入全類名
設(shè)置匹配變量

因?yàn)槭橇斜眍愋偷淖兞坎攀褂迷摵缶Y,故這里我們填寫(xiě)java.util.Collection。

填寫(xiě)匹配變量

第三步

最后是輸入展開(kāi)后的表達(dá)式。使用$EXPR$來(lái)表示匹配的變量,使用$END$來(lái)表示光標(biāo)結(jié)尾。

填寫(xiě)完畢

此處輸入

$EXPR$.stream().collect(java.util.Collections.toMap($END$));

注意,這里使用的類名要使用全類名,否則之后還需要手動(dòng)import類。

完成

保存設(shè)置后,便可以使用該后綴補(bǔ)全功能:

后綴補(bǔ)全演示

參見(jiàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容