You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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"
],

改动说明

  1. 修改正则为^(.*?)(\r?\n)?$,精准匹配每行内容及可能的末尾换行
  2. 替换时只保留\t$1,丢弃匹配到的换行符$2,消除选中内容末尾的多余空行
  3. 光标$0会自动定位到包裹代码块内部的末尾,不会出现双光标问题

内容的提问来源于stack exchange,提问作者MyTallest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 10:59:53