vue文件中${不触发转换是因为插件默认语言白名单不含vue,需手动在settings.json中添加"vue"到template-string-converter.validlanguages并重载窗口。

它能自动把 'string ${x}' 变成 `string ${x}`,但默认只对 JS/TS 生效,Vue、Svelte 等需手动加配置,否则按 $ 没反应。
为什么在 Vue 文件里敲 ${ 不触发转换?
插件默认语言白名单是 ["javascript", "typescript"],.vue 文件的 script 区域虽然写的是 JS/TS,但 VS Code 把整个文件识别为 vue 语言模式,不在默认列表里就直接忽略。不报错、不提示、也不工作——这是最常被卡住的地方。
解决办法是显式添加支持:
- 打开 VS Code 设置(
Ctrl+,),搜索template-string-converter.validLanguages - 点击「在 settings.json 中编辑」,添加或修改这一行:
"template-string-converter.validLanguages": ["javascript", "typescript", "vue", "svelte"]
- 保存后重启编辑器或重载窗口(
Ctrl+Shift+P→Developer: Reload Window)
convertWithinTemplateString 开启后反而更乱?
这个选项控制「在已有的模板字符串里再输 ${ 时,是否把外层引号也转一遍」。比如你已有 `hello ${name}`,光标停在 name 后面又敲 ${,它会试图把整个字符串再套一层反引号,变成 ``hello ${name}${``} —— 显然不是你想要的。
建议关掉它:
- 在 settings.json 中加这一行:
"template-string-converter.convertWithinTemplateString": false
- 除非你明确需要嵌套模板字符串(极少见),否则保持
false更安全
想让 JSX 属性里的字符串也自动转,怎么配?
JSX 中写 title={'hello ' + name} 很常见,但插件默认不处理属性值里的字符串。要让它生效,得开两个开关:
-
"template-string-converter.addBracketsToProps": true:自动给模板字符串外加花括号,比如把title="hello ${name}"变成title={`hello ${name}`} -
"template-string-converter.convertOutermostQuotes": true:确保最外层引号被替换(否则可能只改内层) - 注意:这两个选项对非 JSX 场景影响不大,但开了之后 JSX 属性中敲
$就能直接触发
真正容易被忽略的是路径和 reload:改完 settings.json 后必须重载窗口,而不是仅保存;另外某些旧版本插件(如 0.6.1)如果通过 UI 修改设置不生效,就得去编辑扩展目录下的 package.json —— 但新版基本不需要,优先走 settings.json。











