html - VS Code:自定义代码段中的变量
问题描述
如何创建一个自定义代码段,该代码段将自动输入我在其前缀中键入的变量值?
我想要一个片段,它将创建一个 html 开始-结束标记注释块。例如,如果我输入/se hello
我希望结果是
<!-- $var start-->
<!-- $var end-->
where$var
替换为“hello”。感谢您的阅读!
解决方案
正如VSCode 片段文档所说,它使用TextMate为其片段提供动力。TextMate 使用 和 形式的变量$name
,${name:default}
幸运的是$TM_CURRENT_WORD
,它可能足以满足您的需求。但是,没有内置变量可以直接在片段名称之后获取多个参数,即$arg1
作为$arg2
变量。以为您可以使用插值的 shell 代码来实现类似的效果,但不幸的是:
片段语法遵循 TextMate 片段语法,但“内插 shell 代码”和使用 \u;除外。两者都不支持。
强调我的
但是,对于这个简单的示例,以下索引变量示例可能就足够了。
<!-- $1 start-->
$0
<!-- $1 end-->
$i
给你一个要填写的值,你可以在每个值之间使用制表符。这$0
是光标在末尾的位置(默认情况下是代码段的末尾)。您可以选择执行以下操作:
<!-- ${1: default text} start-->
$0
<!-- $1 end-->
它会开始看起来像:
<!-- default text start-->
<!-- default text end-->
选择要编辑的两个默认值。
这一切放在一起在snippets.json
文件中看起来像这样:
{
"se": {
"scope": "html",
"prefix": "se",
"body": [
"<!-- ${1:default text} start-->",
"\t$0",
"<!--$1 end-->"
]
}
}
正如@Mark 指出的那样,如果您希望它不仅仅适用于您可以使用的 HTML,$BLOCK_COMMENT_START
并且$BLOCK_COMMENT_END
每种语言都会有所不同。该片段将如下所示:
{
"se": {
// Leaving scope off will make it a global snippet
"prefix": "se",
"body": [
"$BLOCK_COMMENT_START ${1:default text} start $BLOCK_COMMENT_END",
"\t$0",
"$BLOCK_COMMENT_START$1 end $BLOCK_COMMENT_END"
]
}
}
推荐阅读
- python - Spyder 未在 Anaconda 导航器上启动
- mysql - MySQL SELECT IF MAX:意外行为
- c++ - 通过交付的功能对容器的容器进行排序
- python - 如何在两个@click.option() 之间打印自定义消息?
- faunadb - ABAC 权限对于读取和写入的工作方式不同
- cmake - cMake 从子项目安装第三方库
- android - 如何从谷歌脚本向WhatsApp组发送消息?
- reactjs - 从使用 CRA 创建的 Firebase 托管 React 应用程序访问外部 API
- javascript - NaN 倒数计时器 javascript
- sql-server - SQL Server - 视图中的 CTE 和删除