我学会了,定制自己的代码片段

简介: vscode的用户片段非常的方便,比如我想规范注释、快速生成代码呀,vscode的用户片段都可以帮我实现,而且是那种非常定制化去实现。定义好片段后,你还可以通过脚手架去生成一个vscode插件,并不复杂。

前言

vscode的用户片段非常的方便,比如我想规范注释、快速生成代码呀,vscode的用户片段都可以帮我实现,而且是那种非常定制化去实现。定义好片段后,你还可以通过脚手架去生成一个vscode插件,并不复杂。

基本指南

先找到文件的菜单 -> 找到首选项 -> 用户片段 -> 选择新建 xx 文件夹的代码片段文件 -> 输入片段名称 -> 开始定制。

这个 xx 文件夹就是你当前目录,当然你也可以新建全局的或者某一个文件类型的,都可以的。无非是片段文件存放的目录不同。

然后你就在当前目录下看到这个了。

只要把它放到当前vscode打开的文件夹的根目录下面,只要vscode能读取到这个文件.vscode即可。
还有一种方式就是你把它放到vscode的用户全局目录下也行,vscode会首先去那里面去找,然后再到当前目录下去找。
至于如何去找vscode的用户全局目录,你新建一个全局的代码片段,然后从vscode的面包屑导航中就能看到了。

开始定制自己的代码片段

目前我只先做一个通用的,可以在js、ts、scss、lesss中能用到的。

{
    "单行注释:start": {
        "scope": "javascript,typescript,javascriptreact,typescriptreact,scss,less,js",
        "prefix": "ts",
        "body": [
            "// PROJECT 一段自定义描述 start",
            "$0"
        ],
        "description": "单行注释:start"
    },
    "单行注释:end": {
        "scope": "javascript,typescript,javascriptreact,typescriptreact,scss,less,js",
        "prefix": "te",
        "body": [
            "// PROJECT 一段自定义描述 end",
            "$0"
        ],
        "description": "单行注释:end"
    },
    "单行注释:start&end": {
        "scope": "javascript,typescript,javascriptreact,typescriptreact,scss,less,js",
        "prefix": "tse",
        "body": [
            "// PROJECT 一段自定义描述 start",
            "",
            "${1:你即将填充的内容}",
            "",
            "// PROJECT 一段自定义描述 end",
        ],
        "description": "单行注释:start&end"
    },
    "多行注释:start": {
        "scope": "javascript,typescript,javascriptreact,typescriptreact,js",
        "prefix": "ms",
        "body": [
            "/**\r\n * PROJECT 一段自定义描述 start",
            " * $0",
            " * */",
            ""
        ],
        "description": "多行注释:start"
    },
    "多行注释:end": {
        "scope": "javascript,typescript,javascriptreact,typescriptreact,js",
        "prefix": "me",
        "body": [
            "/* PROJECT 一段自定义描述 end */",
            ""
        ],
        "description": "多行注释:end"
    }
}

上面定制的是js、ts、jsx的注释代码块,不同的人有不同的风格,你简单改改成你自己的了。

使用说明:代码片段是需要通过 关键字 才能呼唤出来的。比如 如上的普通的单行注释就是通过 ts呼唤出来的,然后按一下补全的键,进行常规补全操作即可,就像windows系统的tab键。

代码片段的关键字就是上述配置文件中的 prefix 属性里的字符串,而scope就是它这个代码片段作用的文件类型了。
而body就是代码片段,数组中每一项都会在生成的代码中独占一行,$0即表示生成代码片段后光标出现的位置。
还会有$1 2 3 4 5 6等等,表示下一次光标出现的位置,也就是你连续敲击按tab键时光标出现的位置。
还可以使用让字符串作为占位符,比如单行注释::start&end 中的${1:xxx},这种就是用字符串当作占位符,可以给你很清楚的提示。

关键字说明:

ts:单行注释:star
te:单行注释:end
tse:单行注释:start&end
ms: 多行注释:start
me:多行注释:end

继续定制jsx和tsx的代码片段

这次先做一个jsx、tsx中能用的吧,jsx、tsx的注释判断和js、ts不太一样,所以要单独做一下。

{
    "jsx&tsx注释:start": {
        "scope": "javascript,typescript,javascriptreact,typescriptreact,js",
        "prefix": "js",
        "body": [
            "{/* PROJECT 一段自定义描述 start */}",
            "$0"
        ],
        "description": "jsx&tsx注释:start"
    },
    "jsx&tsx注释:end": {
        "scope": "javascript,typescript,javascriptreact,typescriptreact,js",
        "prefix": "je",
        "body": [
            "{/* PROJECT 一段自定义描述 end */}",
            "$0"
        ],
        "description": "jsx&tsx注释:end"
    },
    "jsx&tsx注释:start&end": {
        "scope": "javascript,typescript,javascriptreact,typescriptreact,js",
        "prefix": "jse",
        "body": [
            "{/* PROJECT 一段自定义描述 start */}",
            "",
            "${1:你即将填充的内容}",
            "",
            "{/* PROJECT 一段自定义描述 end */}",
        ],
        "description": "jsx&tsx注释:start&end"
    }
}

效果如图:

关键字说明:

js:jsx&tsx注释:start
je:jsx&tsx注释:end
jse:jsx&tsx注释:start&end

再来一个css的

其实到了这里,你已经对vscode定制代码片段非常熟悉了,如果我上面写的片段不符合你的要求,你可以自己改改哟,没有什么复杂的操作。

{
    "css注释:start": {
        "scope": "css",
        "prefix": "cs",
        "body": [
            "/* PROJECT 一段自定义描述 start */",
            "$0"
        ],
        "description": "css注释:start"
    },
    "css注释:end": {
        "scope": "css",
        "prefix": "ce",
        "body": [
            "/* PROJECT 一段自定义描述 end */",
            "$0"
        ],
        "description": "css注释:end"
    },
    "css注释:start&end": {
        "scope": "css",
        "prefix": "cse",
        "body": [
            "/* PROJECT 一段自定义描述 start */",
            "",
            "${1:你即将填充的内容}",
            "",
            "/* PROJECT 一段自定义描述 end */",
        ],
        "description": "css注释:start&end"
    }
}

关键字说明:

cs:css注释:start
ce:css注释:end
cse:css注释:start&end

最后做个todo吧

{
    "TODO注释:common": {
        "scope": "javascript,typescript,javascriptreact,typescriptreact,scss,less,js",
        "prefix": "tt",
        "body": [
            "// PRJECT-TODO:$0"
        ],
        "description": "TODO注释:common"
    },
    "TODO注释:jsx": {
        "scope": "javascriptreact,typescriptreact",
        "prefix": "jt",
        "body": [
            "{/* PRJECT-TODO:$0 */}"
        ],
        "description": "TODO注释:jsx"
    },
    "TODO注释:css": {
        "scope": "css",
        "prefix": "ct",
        "body": [
            "/* PRJECT-TODO:$0 */"
        ],
        "description": "TODO注释:css"
    },
}

关键字说明:

tt:TODO注释:common
jt:TODO注释:jsx
ct:TODO注释:css

总结

有了这些代码片段之后,其实还可以做一个vscode的插件,也比较的简单,这篇掘金文章中写了很详细了,照着做基本没啥问题。

关键字汇总说明

js、ts、less、scss文件中能够用到的

ts:单行注释:star
te:单行注释:end
tse:单行注释:start&end
ms: 多行注释:start
me:多行注释:end

jsx、tsx文件中能够用到的

js:jsx&tsx注释:start
je:jsx&tsx注释:end
jse:jsx&tsx注释:start&end

css文件中能够用到的

cs:css注释:start
ce:css注释:end
cse:css注释:start&end

上述三种文件中都能用到的todo

tt:TODO注释:common
jt:TODO注释:jsx
ct:TODO注释:css

目录
相关文章
|
存储 缓存 算法
内存分配不再神秘:深入剖析malloc函数实现原理与机制
内存分配不再神秘:深入剖析malloc函数实现原理与机制
|
存储 前端开发 JavaScript
最适合新手学习的react案例-Todolist尊享版!
【8月更文挑战第13天】最适合新手学习的react案例-Todolist尊享版!
193 2
最适合新手学习的react案例-Todolist尊享版!
|
JavaScript 前端开发 安全
15个最佳的代码评审(Code Review)工具
  代码评审可以被看作是计算机源代码的测试,它的目的是查找和修复引入到开发阶段的应用程序的错误,提高软件的整体素质和开发者的技能。代码审查程序以各种形式,如结对编程,代码抽查等。在这个列表中,我们编制了15个最好的代码审查工具,这将有助于开发者节省代码审查时间。
4887 0
|
7月前
|
存储 算法 安全
.NET 平台 SM2 国密算法 License 证书生成深度解析
授权证书文件的后缀通常取决于其编码格式和具体用途。本文档通过一个示例程序展示了如何在 .NET 平台上使用国密 SM2 算法生成和验证许可证(License)文件。该示例不仅详细演示了 SM2 国密算法的实际应用场景,还提供了关于如何高效处理大规模许可证文件生成任务的技术参考。通过对不同并发策略的性能测试,开发者可以更好地理解如何优化许可证生成流程,以满足高并发和大数据量的需求。 希望这段描述更清晰地传达了程序的功能和技术亮点。
716 14
.NET 平台 SM2 国密算法 License 证书生成深度解析
|
8月前
|
安全 算法 数据安全/隐私保护
安全漏洞、eBPF、机密计算、商用密码等技术分享|龙蜥大讲堂113期
欢迎大家参加首届中国研究生操作系统创新大赛。我是龙蜥社区安全委员会委员、阿里云技术专家张诗乐。今天,我将为大家介绍龙蜥社区的漏洞治理以及相关的赛题。主要内容分为三个部分:首先,我将简要介绍龙蜥社区及其操作系统;其次,我们将探讨龙蜥社区的漏洞治理流程;最后,我们将解析与龙蜥社区相关的赛题。 1. 龙蜥社区漏洞治理 2. 龙蜥社区赛题介绍 3. 基于 eBPF 的容器异常检测 4. 赛题解析系列
248 12
|
Python
Python软件包及环境管理器conda实战篇
详细介绍了如何使用conda进行Python软件包管理及环境管理,包括查看、安装、卸载软件包,切换源,管理不同版本的Python环境,以及解决使用过程中可能遇到的错误。
462 2
Python软件包及环境管理器conda实战篇
|
11月前
|
数据处理
MoE再下一城!港大提出AnyGraph:首次开启图大模型Scaling Law之路
近年来,图结构数据因关系数据的广泛应用而备受关注,但现有模型在处理复杂图数据时需大量微调,灵活性受限。香港大学团队提出了AnyGraph,一种基于图混合专家(MoE)架构的统一图模型,有效应对结构与特征异质性、快速适应及规模定律挑战。通过多样化图专家与轻量级路由机制,AnyGraph实现零样本学习和跨领域数据处理。然而,其计算复杂度较高且路由机制仍有待优化。(239字)
155 2
|
API 开发者
【API管理 APIM】APIM集成内部VNet后,自我访问出现(Unable to connect to the remote server)问题,而Remote Server正是APIM它自己
【API管理 APIM】APIM集成内部VNet后,自我访问出现(Unable to connect to the remote server)问题,而Remote Server正是APIM它自己
419 5
|
存储 Prometheus 监控