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"
  }
}
相关文章
相关标签/搜索