IntelliJ IDEA:File and code templates
官方文檔傳送門html
File templates是一套在建立一個新的文件時被自動生成的內容的規範。取決於你將要建立的文件的種類,templates會在全部的那種文件中提供一套按照行業標準或大家團隊協做的約定或考慮其它因素的初始化的格式化的代碼。java
IDEA 爲全部支持的文件類型提供了已經定義好的templates。templates會在使用者建立一個新文件時提示用戶使用。被建議使用的文件類型的集合取決於項目(module)和配置,還取決於在項目工具窗口(Project tool window)中,你當前(要建立/插入新文件)的位置的性質。好比說,IDEA將不會在Java source和test目錄歪的位置提示你建立一個java class類型的文件。apache
做用域問題
File templates在 Editor | File and Code Templates page of IntelliJ IDEA settings (Ctrl+Alt+S) 中被管理。這一設置頁面的設置有兩個做用域:框架
- 保存在默認做用域下的設置管理存在於整個workspace中templates。這些設置存儲在
fileTemplates
下的 IDE configuration directory
- 保存在項目做用域下的設置管理其對應項目下的templates。這些設置被存儲在項目文件夾下的
.idea/fileTemplates
。這些templates能夠在團隊成員間共享。
一開始,templates列表中只有由IDEA提供的預先定義好的templates。其中一些是internal的,這意味着它們不能被刪除也不能被重命名。內置的templates的名字會用粗體展現。使用者調整過的和自定義的templates的名字以藍色進行展現。ide
templates的分類
IDEA把templates分爲如下幾種進行使用,它們也分別對應設置頁面中的幾個tab:工具
- Files tab:其中都是能夠被用來建立新文件的file templates。
- Includes tab:其中都是能夠插入到file templates中的可被複用的內容的templates,好比說,設置一個文件頭template,它能自動生成其被建立的時間,建立它的做者的名字。這個文件頭就可被複用的嵌入到各類文件中。
- Code tab:其中都是爲被IDEA用來創造各類各樣的結構的代碼片斷所準備的internal templates。你能夠修改這個tab下的template,但你不能建立該分類下的新的templates.
- Other tab:其中都是被各類各樣的應用框架(如Android開發,EJB規範,Mybatis開發等等)所使用的templates。你能夠編輯修改該tab下的已存在的內置的templates,但不能建立新的。
建立一個新的file/include template
下述步驟描述瞭如何建立一個新的file template。對於建立新的include templates來講,步驟十分類似。idea
從頭新建一個新的file template
- In the Settings/Preferences dialog (Ctrl+Alt+S), select Editor | File and Code Templates.
- On the Files tab, click and specify the name, file extension, and body of the template.
- Apply the changes and close the dialog.
複製一個已經存在的file template
- In the Settings/Preferences dialog (Ctrl+Alt+S), select Editor | File and Code Templates.
- On the Files tab, click and modify the name, file extension, and body of the template as necessary.
- Apply the changes and close the dialog.
把一個文件設置爲一個file template
- Open a file in the editor.
- Choose Tools | Save File as Template from the menu.
- In the Save File as Template dialog that opens, specify the new template name and edit the body, if necessary.
- Apply the changes and close the dialog.
template的語法
File和code templates按照Velocity Template Language (VTL)語法書寫。VLT語法使用瞭如下的構件:spa
- 寫死的內容。包括代碼,註釋等等。這些內容會被原樣展示。
- 變量(Variables),最後呈現時會被實際值替換。
- 命令:好比
#parse
#set
, #if
下面這個例子是在IDEA建立一個.java文件時的默認模板翻譯
#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
public class ${NAME} {
}
在這個模板中code
-
#if
命令被用來檢查包名是否非空。若是非空,則爲package聲明增長由${PACKAGE_NAME}
變量指明的包名。
-
#parse
命令被用來在該template(或者說文件)中插入另外一個名爲File Header.java的template的內容。
- 而後這個template聲明瞭一個public class並使用
${NAME}
變量(存儲了新文件的名字)指明的類名。
- 我懷疑這裏的internal指的是被IDEA依賴的。也就是說IDEA要正常工做必須依靠的。由於這個找不到合適的短詞語進行翻譯,故在此說明,此後遇到該詞不做翻譯。
- (https://www.jetbrains.com/hel...