http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xvii-a-live-templates-introduce-1.gif" alt="實時代碼模板的介紹" />
- 上圖 Gif 演示為最好的介紹
Live Templates。- 實時代碼模板需要字符串前綴,如 Gif 演示中,在輸入
sys后生成一段輸出語句,其中sys前綴是我自己設置的。- 實時代碼模板支持變量參數(shù)設置,如 Gif 演示中,在輸入
temp1的時候,后面自動也生成了一個temp1,這是因為兩者的變量名是一致的,所以我設置了一個變量值內(nèi)容之后,相同變量值的內(nèi)容也會跟著出現(xiàn)。- 實時代碼模板支持最后位置的定位,如 Gif 演示中,在輸入完
temp1之后,按Enter后自動跳轉(zhuǎn)到語句末。雖然默認沒有設置的時候也是在這個位置,但是我是通過設置來定位到此位置的。- 實時代碼模板支持獲取當前類名和當前方法名(本質(zhì)是內(nèi)置函數(shù)),如 Gif 演示中,在輸入完
sys生成輸出語句中自動帶有當前類名和方法名。- 綜上效果:實時代碼模板只是為了讓我們更加高效的寫一些固定模式的代碼,以提高編碼效率,同時也可以增加個性化。比如 Gif 演示中,我在開發(fā)中如果需要寫輸出的話,我個人習慣輸出語句中前綴是自己的標記:橫線和域名,以區(qū)分其他人輸出,方便做全文搜索。
- 官網(wǎng)介紹
Live Templates:https://www.jetbrains.com/idea/help/live-templates.html
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xvii-a-live-templates-introduce-2.jpg" alt="實時代碼模板的介紹" />
- 如上圖標注所示,實時代碼模板本質(zhì)是用 XML 文件來保存的,所以傳播自己的實時代碼模板只要傳播對應的文件即可。
- IntelliJ IDEA 的實時代碼模板保存在
/templates目錄下,其他系統(tǒng)目錄位置如下:(因為目錄名在各個系統(tǒng)上是一致的,建議用硬盤搜索工具搜索即可)
- Windows:
C:\Users\youmeek\.IntelliJIdea2017.2\config- Linux:
~/.<product name><version number>/config/templates- OS X:
~/Library/Preferences/IdeaIC2017.2/templates
調(diào)用常規(guī)的實時代碼模板主要是通過兩個快捷鍵:Tab 和 Ctrl + J。雖然 IntelliJ IDEA 支持修改此對應的快捷鍵,但是默認大家都是這樣使用的,所以沒有特別原因就不要去改。
該兩個快捷鍵的使用方法:如第一張 Gif 演示圖所示,在輸入 sys 后按 Tab 鍵,即立即生成預設語句。如果按 Ctrl + J 則會先提示與之匹配的實時代碼模板介紹,然后還需按 Enter 才可完成預設語句的生成。
在文章開頭我們已經(jīng)有提到 IntelliJ IDEA 實時代碼模板是有變量參數(shù)設置的,其中 IntelliJ IDEA 自帶了兩個變量參數(shù):
$END$,表示最后都編輯完后光標所處的位置$SELECTION$,表示設置環(huán)繞實時代碼模板,環(huán)繞功能下面會模板專門進行介紹。- 除了上面兩個變量參數(shù)外,其他一律都會自定義變量。
- 官網(wǎng)介紹:https://www.jetbrains.com/idea/help/live-template-variables.html
$END$indicates the position of the cursor after the template is expanded.$SELECTION$is used in surround templates and stands for the code fragment to be wrapped.
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xvii-b-live-templates-settings-1.jpg" alt="實時代碼模板的設置" />
- 如上圖標注 1 所示,除了 IntelliJ IDEA 預設的模板之外,我們還可以創(chuàng)建新組和新實時代碼模板,其中組是用來包含實時代碼模板的。
- 如上圖標注 2 所示,
output是組名,告訴開發(fā)者,這組里面實時代碼模板都是用來做輸出的。serr表示實時代碼模板輸出System.err的簡稱,所以這個不是一個完整的單詞,不需要讀懂,只需要記憶。- 如上圖標注 3 所示,實時代碼模板的內(nèi)容,其中用到了預設的變量
$END$。- 如上圖標注 4 所示,可設置該實時代碼模板的試用范圍,比如圖上的
serr這是 Java 代碼,所以試用范圍我們就應該只是 Java 文件上或是 JSP 這類文件上,設置在 HTML 或是 CSS 文件上就完全沒有多大意義了。- 如上圖標注 5 所示,勾選了輔助的功能:
Reformat according to style對生成的代碼進行格式化。Shorten FQ names表示縮寫類的全稱限定名。這個一般需要勾選,幫助你把模板里的全稱限定名對應的類 import,然后使用的地方改成縮寫。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xvii-b-live-templates-settings-2.jpg" alt="實時代碼模板的設置" />
- 如上圖標注 1 所示,我們可以對實時代碼模板進行組的轉(zhuǎn)移。
如文章開頭演示的 Gif 實時代碼模板,其實時代碼模板內(nèi)容為:System.out.println("-----------YouMeek.com-----------$VAR1$值=" + $VAR1$ + "," + "當前類=$CLASS_NAME$.$METHOD_NAME$()");$END$
$VAR1$、$CLASS_NAME$、$METHOD_NAME$都為自己定義的變量名。設置變量名只要用兩個$包住即可。- 每個變量在代碼輸出的時候都是一次光標位置,光標跳動順序從左到右,每次跳動按
Enter。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xvii-c-live-templates-variables-settings-1.jpg" alt="變量參數(shù)和函數(shù)的介紹" />
- 如上圖標注紅圈所示,可以對編輯代碼內(nèi)容的變量。
- 如上圖標注 1 所示,演示中變量名
$CLASS_NAME$、$METHOD_NAME$會自動輸出當前類名和方法名是因為使用對應的函數(shù)className()和methodName()。- 如上圖標注 2 所示,如上面介紹的,每個變量都是一次光標位置,但是演示中變量名
$CLASS_NAME$、$METHOD_NAME$沒有進入,是因為勾選了Skip if defined。- 如上圖標注 3 所示,可以改變變量光標跳轉(zhuǎn)時的順序。
- 內(nèi)置函數(shù)介紹:https://www.jetbrains.com/idea/help/live-template-variables.html
- 對于官網(wǎng)這些函數(shù)這里就不在累贅,官網(wǎng)有詳細的介紹,如果你還看不懂,可以看 IntelliJ IDEA 已經(jīng)預設各個實時代碼模板,基本上常用的函數(shù)都有被引用過,你可以通過學習這些預設的實時代碼模板來揣測其函數(shù)的用法。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xvii-d-live-templates-surround-settings-1.gif" alt="環(huán)繞功能介紹" />
- 上圖 Gif 演示為最好的介紹
surround templates。- 如上圖 Gif 演示,環(huán)繞模板的前提是:選中要被環(huán)繞的內(nèi)容。
- 在設置實時代碼模板的時候,如果含有預設的變量
$SELECTION$則該實時代碼模板是環(huán)繞模板。- 該功能對于前端開發(fā)者來講是非常方便的,默認 IntelliJ IDEA 已經(jīng)自帶了 HTML 標簽的環(huán)繞功能。