VS Code代码片段包裹选中文本时的光标位置与换行问题求助
代码片段包裹选中文本的问题修复
问题情况
- 用代码片段包裹选中文本后,出现双光标,且选中文本末尾多出空行
- 原始选中代码:
cube([10, 10, 10]);
- 期望实现效果:
difference() { cube([10, 10, 10]); | }
- 当前实际错误效果:
|difference() { cube([10, 10, 10]); |}
- 当前使用的代码片段:
"body": [ "${1:${TM_SELECTED_TEXT/^([ \t]*)[\s\S]*$/$1/}}difference() {", "${TM_SELECTED_TEXT/^(.*?)$(\r?\n)?/\t$1$2/gm}", // note the 'g' flag !!! "$1$0}\n" ],
修复代码
调整正则替换规则,处理末尾换行并修正光标位置:
"body": [ "${1:${TM_SELECTED_TEXT/^([ \t]*)[\s\S]*$/$1/}}difference() {", "${TM_SELECTED_TEXT/^(.*?)(\r?\n)?$/\t$1/gm}", "$1$0}\n" ],
改动说明
- 修改正则为
^(.*?)(\r?\n)?$,精准匹配每行内容及可能的末尾换行 - 替换时只保留
\t$1,丢弃匹配到的换行符$2,消除选中内容末尾的多余空行 - 光标
$0会自动定位到包裹代码块内部的末尾,不会出现双光标问题
内容的提问来源于stack exchange,提问作者MyTallest
相关产品推荐
相关产品推荐

