VSCode后缀代码片段:用点语法捕获前置单词实现弧度转换
问题原因
你遇到的问题是因为VSCode的TM_CURRENT_WORD变量只会捕获光标当前所在的单词,而默认情况下.属于单词分隔符。当你输入.toradians时,光标处于toradians这个单词上,所以它捕获的是toradians而非前面的myVariable。最终替换时,原变量myVariable没有被删除,加上片段生成的内容,就出现了myVariableMath.toRadians(toradians)的结果。
解决方法
可以利用VSCode代码片段的行正则替换功能,提取当前行中.前面的变量,同时替换掉整个.toradians后缀。修改后的代码片段如下:
"To Radians": { "prefix": ".toradians", "body": [ "Math.toRadians(${1:${TM_CURRENT_LINE/^(.*)\\.toradians$/$1/}})" ], "description": "Wrap preceding variable in Math.toRadians()" }
原理说明
${TM_CURRENT_LINE/^(.*)\\.toradians$/$1/}:这部分是对当前行执行正则替换,^(.*)\.toradians$会匹配整个行,捕获.前面的所有内容(也就是你的变量名)作为分组1,然后用分组1的内容替换整个行的匹配部分。- 触发片段后,整个
myVariable.toradians会被替换成Math.toRadians(myVariable),同时光标会停留在括号内的变量位置,方便快速修改。
如果希望触发后光标直接在括号外,可以简化为:
"To Radians": { "prefix": ".toradians", "body": [ "Math.toRadians(${TM_CURRENT_LINE/^(.*)\\.toradians$/$1/})" ], "description": "Wrap preceding variable in Math.toRadians()" }
内容的提问来源于stack exchange,提问作者retrovius
相关产品推荐
相关产品推荐

