vscode 代碼片斷

Visual Studio代碼中的代碼片斷

代碼段是模板,可以讓您更輕鬆地輸入重複的代碼模式,例如循環或條件語句。javascript

在Visual Studio Code中,代碼片斷會與其餘建議一塊兒出如今智能感知中,也出如今專用的代碼片斷選擇器中(在「命令面板」中插入代碼片斷)。還支持製表符補全:使用啓用它"editor.tabCompletion": "on",鍵入一個代碼段前綴(觸發文本),而後按Tab插入一個代碼段。html

建立本身的代碼段

您能夠輕鬆定義本身的代碼片斷,而無需任何擴展。要建立或編輯本身的代碼段,請在「 文件」 > 「首選項****」下選擇「 用戶代碼段****」(在macOS上爲「 代碼」 > 「首選項 」),而後選擇要顯示代碼段的語言,若是須要,則選擇「 新建全局代碼段」文件選項。出現全部語言。VS Code爲您管理基礎代碼段文件的建立和刷新。java

代碼段文件以JSON格式編寫,支持C樣式的註釋,而且能夠定義無限數量的代碼段。片斷支持大多數TextMate語法以實現動態行爲,並根據插入上下文智能地格式化空格,並容許輕鬆地進行多行編輯。json

如下是forJavaScript循環代碼段的示例:編輯器

// in file 'Code/User/snippets/javascript.json'
{
  "For Loop": {
    "prefix": ["for", "for-const"],
    "body": ["for (const ${2:element} of ${1:array}) {", "\t$0", "}"],
    "description": "A for loop."
  }
}

在上面的示例中:ide

  • 「 For Loop」是代碼段名稱。若是未description提供,則經過IntelliSense顯示。
  • prefix定義一個或多個觸發詞,這些觸發詞在IntelliSense中顯示該片斷。子字符串匹配是在前綴上執行的,所以,在這種狀況下,「 fc」能夠匹配「 for-const」。
  • body是一個或多個內容行,插入時將做爲多行內容加入。換行符和嵌入的選項卡將根據插入代碼段的上下文進行格式化。
  • description 是IntelliSense顯示的代碼段的可選描述。

另外,所述body的例子中的上述具備三個佔位符(在遍歷順序列出): ,${1:array},${2:element}和$0。您能夠使用Tab快速跳到下一個佔位符,此時您能夠編輯佔位符或再次跳到下一個佔位符。結腸(若是有的話)以後的字符串是默認的文本,例如element在${2:element}。佔位符遍歷順序從數字開始遞增,從1開始;零是一種可選的特殊狀況,它老是排在最後,並在光標位於指定位置的狀況下退出摘要模式。oop

片斷範圍

代碼片斷的範圍有限,所以僅建議相關代碼段。片斷的範圍能夠是:code

  1. 摘要所涉及的語言(多是全部語言)
  2. 摘要所涉及的項目(多是所有)

語言片斷範圍

根據是否在如下代碼中定義,每一個代碼段的範圍都限於一種,幾種或全部(「全局」)語言:htm

  1. 一個語言片斷文件
  2. 一個全局性片斷文件

用戶定義的單語言代碼段是在特定語言的代碼段文件中定義的(例如javascript.json),您能夠經過「首選項:配置用戶代碼段」中的語言標識符來訪問該文件。僅在編輯其定義的語言時才能訪問該代碼段。blog

多語言和全局用戶定義的代碼段均在「全局」代碼段文件(帶有文件後綴的JSON .code-snippets)中定義,也能夠經過「首選項:配置用戶代碼段」進行訪問。在全局代碼段文件中,代碼段定義可能具備scope採用一個或多個語言標識符的附加屬性,這使該代碼段僅可用於那些指定的語言。若是未提供任何scope屬性,則全局代碼段適用於全部語言。

大多數用戶定義的代碼段的範圍僅限於一種語言,所以是在特定於語言的代碼段文件中定義的。

項目片斷範圍

您還能夠將全局片斷文件(帶有文件後綴的JSON .code-snippets)的範圍限定到您的項目。項目文件夾摘要是使用「'...「 首選項:配置用戶代碼段」下拉菜單中的「選項」選項,該選項位於.vscode文件夾中項目的根目錄下。項目摘要文件可用於與該項目中的全部用戶共享摘要。項目文件夾片斷與全局片斷類似,而且能夠經過該scope屬性將範圍限定爲特定語言。

片斷語法

該body片斷能夠使用特殊的結構來控制插入光標和文字。如下是受支持的功能及其語法:

製表位

使用製表符,能夠使編輯器光標在摘要內移動。使用$1,$2指定遊標的位置,。該數字是將按$0Tab鍵訪問的順序,而表示最終光標的位置。相同的Tabstop的屢次出現被連接並同步更新。

佔位符

佔位符是帶有值的製表符,例如${1:foo}。將插入並選擇佔位符文本,以即可以輕鬆更改它。佔位符能夠嵌套,例如${1:another ${2:placeholder}}。

選擇

佔位符能夠選擇做爲值。語法是用逗號分隔的值枚舉,例如用豎線字符括起來${1|one,two,three|}。插入代碼段並選擇佔位符後,選項將提示用戶選擇其中一個值。

變量

使用$name或${name:default},您能夠插入變量的值。若是未設置變量,則將其默認值或空字符串插入。當變量未知(即未定義其名稱)時,將插入該變量的名稱,並將其轉換爲佔位符。

變量

使用$name或${name:default},您能夠插入變量的值。若是未設置變量,則將其默認值或空字符串插入。當變量未知(即未定義其名稱)時,將插入該變量的名稱,並將其轉換爲佔位符。

能夠使用如下變量:

  • TM_SELECTED_TEXT 當前選擇的文本或空字符串
  • TM_CURRENT_LINE 當前行的內容
  • TM_CURRENT_WORD 光標下的單詞內容或空字符串
  • TM_LINE_INDEX 基於零索引的行號
  • TM_LINE_NUMBER 基於一索引的行號
  • TM_FILENAME 當前文檔的文件名
  • TM_FILENAME_BASE 當前文檔的文件名,不帶擴展名
  • TM_DIRECTORY 當前文件的目錄
  • TM_FILEPATH 當前文檔的完整文件路徑
  • CLIPBOARD 剪貼板中的內容
  • WORKSPACE_NAME 打開的工做空間或文件夾的名稱

要插入當前日期和時間:

  • CURRENT_YEAR 本年度
  • CURRENT_YEAR_SHORT 本年度的最後兩位數字
  • CURRENT_MONTH 以兩位數表示的月份(例如「 02」)
  • CURRENT_MONTH_NAME 月的全名(例如「七月」)
  • CURRENT_MONTH_NAME_SHORT 月的簡稱(例如「 Jul」)
  • CURRENT_DATE 一個月中的某天
  • CURRENT_DAY_NAME 一天的名稱(例如「星期一」)
  • CURRENT_DAY_NAME_SHORT 一天的簡稱(例如「 Mon」)
  • CURRENT_HOUR 24小時制的當前小時
  • CURRENT_MINUTE 當前分鐘
  • CURRENT_SECOND 當前秒
  • CURRENT_SECONDS_UNIX 自Unix時代以來的秒數

要插入行或塊註釋,請遵循當前語言:

  • BLOCK_COMMENT_START輸出示例:用PHP /*或HTML<!--
  • BLOCK_COMMENT_END輸出示例:用PHP */或HTML-->
  • LINE_COMMENT 示例輸出:在PHP中 //

如下代碼段可插入/* Hello World */JavaScript文件和<!-- Hello World -->HTML文件中:

{
  "hello": {
    "scope": "javascript,html",
    "prefix": "hello",
    "body": "$BLOCK_COMMENT_START Hello World $BLOCK_COMMENT_END"
  }
}
相關文章
相關標籤/搜索