visual-studio-code - VS 代码片段替换(转换)适用于变量而不是占位符
问题描述
据说 vs 代码在用户定义的片段中支持变电站,即转换。但它仅适用于(内置)变量而不是占位符。
请参阅以下代码段:
"substitution test" : {
"prefix" : "abc",
"body": [
"${TM_FILENAME}",
"${TM_FILENAME/^([^.]+)\\..+$/$1/}",
"${TM_FILENAME/^([^.]+)\\..+$/${1:/capitalize}/}",
"${TM_FILENAME/^([^.]+)\\..+$/${1:/upcase}/}",
"${2:showMeInAllCapsWhenReferenced}",
"${2/upcase}"
]
}
第 1-4 行的输出与预期的一样:
users.actions.ts
users
Users
USERS
在第 5 行有一个占位符,我在第 6 行再次引用它。我希望它显示两次,一次在我键入时显示,然后再次全大写。所以例如:
fooFoo
FOOFOO
但实际输出是
showMeInAllCapsWhenReferenced
${2/upcase}
是否可以替换/转换引用的占位符(当我键入时)?
解决方案
你的最后两行应该是:
"${2:showMeInAllCapsWhenReferenced}",
"${2/(.*)/${1:/upcase}/}"
在最后一个选项卡之后,实际应用了转换(因此在技术上不是“在您键入时”占位符替换)。
从 占位符转换:
插入的文本与正则表达式匹配,并且匹配项或匹配项(取决于选项)被替换为指定的替换格式文本。
因此,您不能像在第 5 行尝试那样仅使用 :/upcase 而不使用正则表达式捕获 - 它只能转换正则表达式匹配。
查看语法部分:
transform ::= '/' regex '/' (format | text)+ '/' options format ::= '$' int | '${' int '}' | '${' int ':' '/upcase' | '/downcase' | '/capitalize' '}' | '${' int ':+' if '}' | '${' int ':?' if ':' else '}' | '${' int ':-' else '}' | '${' int ':' else '}'
我们看到 :/upcase 必须遵循正则表达式。(“格式”,其中大写是一种,必须遵循“转换”中的“正则表达式”。)
推荐阅读
- java - 如何解决 Java 中的“线程“主”java.lang.StringIndexOutOfBoundsException 中的异常:字符串索引超出范围:5”问题
- docker - 在 docker 映像中运行 ubuntu 16.04 bash shell
- javascript - JavaScript:如何在调用 new 后对类进行字符串化
- reactjs - 如何分发 NPM 包,以便 React 使用 babel 编译的版本,而 React Native 使用未编译的代码?
- android - 飞行模式后触发 HiveMQ 异常,会话因连接关闭而过期
- android - 使用 android 处理程序时如何解决有关内存泄漏的警告?
- php - 什么会使 XMLReader 可以通过命令行 `php` 使用而不是 Apache?
- label - 在标签中同时使用希腊字母和下标的困难
- android - Flutter - 多个图标改变了每个图标的颜色
- csv - 如何将 16 位数字加 1 以生成 5000 万条记录