前言
VS Code设置代码片段,官网介绍
代码片段是模板,可以快速地输入重复的代码,比如循环、条件语句、注释模板等。在vs code中代码片段会和自动提示IntelliSense(Ctrl + Space)一起出现,也出现在专用的代码片段选择器中(在“命令面板”中插入代码片段)。还支持制表符补全:使用启用它"editor.tabCompletion": “on”,键入一个代码段前缀(触发文本),然后按Tab键插入一个代码段。
正文
本文主要介绍如何自定义代码片段,可以选择要显示代码段的编程语言,我们这里以C++为例。
打开 文件->首选项->用户代码段
选择C++
打开后已经存在一个注释的示例代码:
// Place your snippets for cpp here. Each snippet is defined under a snippet name and has a prefix, body and
// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the
// same ids are connected.
// Example:
// "Print to console": {
// "prefix": "log",
// "body": [
// "console.log('$1');",
// "$2"
// ],
// "description": "Log output to console"
// }
说明:
- “Print to console” 是代码段名称。如果未description提供,则通过IntelliSense显示。
- prefix定义一个或多个在IntelliSense中显示摘要的触发词。
- body是一或多个内容行,插入时将作为多行内容加入。换行符和嵌入的选项卡将根据插入代码段的上下文进行格式化。$1和$2是占位符,可以通过tab进行切换。
- description 是IntelliSense显示的代码段的可选描述。
根据以上规则,我们可以实现自己想要的代码片段,比如:
"Add File Header": {
"prefix": "fileheader",
"body": [
"/**"
" * @file :${TM_FILENAME}"
" * @brief :$1"
" * @author :xxxx"
" * @version :V1.0.0"
" * @date :${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE}"
" */"
],
"description": "Add file describe"
},
"pragma once":{
"prefix": "once",
"body": "#pragma once"
}
注意,如果有多个代码片段,需要用逗号隔开。
以上实现了两个代码片段,通过fileheader和once就能分别引用到,如下:
变量
使用$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 打开的工作空间或文件夹的名称
- WORKSPACE_FOLDER 打开的工作空间或文件夹的路径
要插入当前日期和时间:
- 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中 //
更多设置请参考:
https://code.visualstudio.com/docs/editor/userdefinedsnippets#_common-questions