代码片段 #

什么是代码片段? #

代码片段(Snippets)是预定义的代码模板,可以通过简短的触发词快速插入常用代码结构。

text
┌─────────────────────────────────────────────────────────────┐
│                     代码片段示例                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  输入触发词:                                                 │
│  for                                                        │
│                                                             │
│  自动展开为:                                                 │
│  for (let i = 0; i < array.length; i++) {                   │
│      const element = array[i];                              │
│  }                                                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

使用代码片段 #

触发片段 #

功能 Mac Windows/Linux 说明
触发建议 ⌃Space Ctrl+Space 显示代码片段建议
接受片段 Tab Tab 插入选中的片段
下一个占位符 Tab Tab 跳转到下一个占位符
上一个占位符 ⇧Tab Shift+Tab 跳转到上一个占位符

使用流程 #

text
1. 输入触发词(如 "for"、"if"、"func")
2. 按 Tab 或 Enter 接受建议
3. 使用 Tab 在占位符之间跳转
4. 填写占位符内容

内置代码片段 #

JavaScript 常用片段 #

触发词 展开内容
log console.log()
for for 循环
forof for…of 循环
foreach forEach 方法
if if 语句
ife if…else 语句
switch switch 语句
try try…catch 语句
function 函数声明
arrow 箭头函数
import import 语句
require require 语句

HTML 常用片段 #

触发词 展开内容
html HTML 文档结构
head head 元素
body body 元素
div div 元素
span span 元素
a 链接元素
img 图片元素
table 表格结构
form 表单元素
input 输入框

CSS 常用片段 #

触发词 展开内容
bg background 属性
bd border 属性
fs font-size 属性
fw font-weight 属性
ta text-align 属性
m margin 属性
p padding 属性
w width 属性
h height 属性
flex display: flex

创建自定义片段 #

打开片段配置 #

text
1. 按 ⌘⇧P / Ctrl+Shift+P
2. 输入 "Configure User Snippets"
3. 选择语言(如 "javascript.json")

片段语法 #

json
{
    "片段名称": {
        "prefix": "触发词",
        "body": [
            "代码行1",
            "代码行2",
            "代码行3"
        ],
        "description": "片段描述"
    }
}

创建示例 #

示例1:React 组件片段 #

json
{
    "React Functional Component": {
        "prefix": "rfc",
        "body": [
            "import React from 'react';",
            "",
            "const ${1:ComponentName} = () => {",
            "    return (",
            "        <div>",
            "            $0",
            "        </div>",
            "    );",
            "};",
            "",
            "export default ${1:ComponentName};"
        ],
        "description": "Create a React functional component"
    }
}

示例2:Console Log 片段 #

json
{
    "Console Log Variable": {
        "prefix": "clg",
        "body": [
            "console.log('${1:variable}:', ${1:variable});"
        ],
        "description": "Log variable with name"
    }
}

示例3:函数注释片段 #

json
{
    "Function Comment": {
        "prefix": "cmt",
        "body": [
            "/**",
            " * ${1:函数描述}",
            " * @param {${2:type}} ${3:param} - ${4:参数描述}",
            " * @returns {${5:type}} ${6:返回值描述}",
            " */"
        ],
        "description": "Create function comment"
    }
}

片段变量 #

内置变量 #

变量 说明
$1, $2, $3 占位符(按 Tab 跳转)
$0 最终光标位置
${1:default} 带默认值的占位符
`${1 a,b,c

特殊变量 #

变量 说明
TM_FILENAME 当前文件名
TM_FILENAME_BASE 文件名(不含扩展名)
TM_DIRECTORY 当前文件目录
TM_FILEPATH 当前文件完整路径
CURRENT_YEAR 当前年份
CURRENT_MONTH 当前月份
CURRENT_DATE 当前日期
CURRENT_HOUR 当前小时
CURRENT_MINUTE 当前分钟
CURRENT_SECOND 当前秒
CURRENT_DAY_NAME 当前星期名
RANDOM 随机数
UUID UUID

变量示例 #

文件名片段 #

json
{
    "File Header": {
        "prefix": "header",
        "body": [
            "/**",
            " * @file ${TM_FILENAME}",
            " * @description ${1:文件描述}",
            " * @author ${2:作者}",
            " * @date ${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE}",
            " */"
        ],
        "description": "Add file header comment"
    }
}

React 组件(使用文件名) #

json
{
    "React Component from Filename": {
        "prefix": "rfcn",
        "body": [
            "import React from 'react';",
            "",
            "const ${TM_FILENAME_BASE} = () => {",
            "    return (",
            "        <div>",
            "            $0",
            "        </div>",
            "    );",
            "};",
            "",
            "export default ${TM_FILENAME_BASE};"
        ],
        "description": "Create React component with filename"
    }
}

片段进阶技巧 #

1. 嵌套占位符 #

json
{
    "Nested Placeholder": {
        "prefix": "test",
        "body": [
            "${1:outer ${2:inner} text}"
        ]
    }
}

2. 正则替换 #

json
{
    "CamelCase to snake_case": {
        "prefix": "snake",
        "body": [
            "${1/([A-Z])/_${1:/downcase}/g}"
        ]
    }
}

3. 多选项占位符 #

json
{
    "Variable Declaration": {
        "prefix": "vard",
        "body": [
            "${1|const,let,var|} ${2:name} = ${3:value};"
        ]
    }
}

项目级片段 #

创建项目片段 #

在项目 .vscode 目录下创建 *.code-snippets 文件:

text
项目目录/
├── .vscode/
│   └── project.code-snippets
└── ...

项目片段示例 #

json
{
    "Project Component": {
        "scope": "javascript,typescript",
        "prefix": "pcomp",
        "body": [
            "import React from 'react';",
            "import styles from './${TM_FILENAME_BASE}.module.css';",
            "",
            "export const ${TM_FILENAME_BASE} = () => {",
            "    return (",
            "        <div className={styles.container}>",
            "            $0",
            "        </div>",
            "    );",
            "};"
        ]
    }
}

片段工作流 #

text
┌─────────────────────────────────────────────────────────────┐
│                     代码片段使用流程                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  识别重复代码                                                │
│     │                                                       │
│     ├─────▶ 创建片段                                         │
│     │        │                                              │
│     │        ├─▶ 打开片段配置                                │
│     │        │                                              │
│     │        ├─▶ 定义触发词                                  │
│     │        │                                              │
│     │        ├─▶ 编写片段内容                                │
│     │        │                                              │
│     │        └─▶ 添加占位符                                  │
│     │                                                       │
│     └─────▶ 使用片段                                         │
│              │                                              │
│              ├─▶ 输入触发词                                  │
│              │                                              │
│              ├─▶ 按 Tab 接受                                │
│              │                                              │
│              └─▶ 填写占位符                                  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

快捷键速查表 #

片段操作 #

功能 Mac Windows/Linux
触发建议 ⌃Space Ctrl+Space
接受片段 Tab Tab
下一个占位符 Tab Tab
上一个占位符 ⇧Tab Shift+Tab

常见问题 #

Q: 片段不显示? #

A: 检查片段的 scope 设置,确保与当前文件类型匹配。

Q: 如何查看所有可用片段? #

A: 按 ⌘⇧P / Ctrl+Shift+P,输入 “Insert Snippet”。

Q: 如何导入/导出片段? #

A: 片段存储在用户配置目录,可以直接复制 JSON 文件。

练习建议 #

练习1:使用内置片段 #

text
1. 创建 JavaScript 文件
2. 输入 "log" 按 Tab
3. 输入 "for" 按 Tab
4. 输入 "if" 按 Tab

练习2:创建自定义片段 #

text
1. 打开 JavaScript 片段配置
2. 创建一个常用的代码片段
3. 测试片段是否正常工作

练习3:使用变量 #

text
1. 创建带文件名变量的片段
2. 创建带日期变量的片段
3. 测试变量是否正确展开

下一步 #

现在你已经掌握了代码片段,接下来学习:

最后更新:2026-04-11