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

VS Code中如何让@{ }补全后光标直接处于括号中间?

解决VS Code扩展中@{...}补全的光标定位问题

直接用SnippetString的$0标记最终光标位置即可,插入补全项后光标会直接落在@{和}之间,完全不需要按Tab切换模式。

修改后的代码如下:

const c = new vscode.CompletionItem('@{}');
c.range = new vscode.Range(position.translate(0, -1), position);
// $0代表最终光标位置,插入后直接定位到此处
c.insertText = new vscode.SnippetString('@{$0}');
completions.push(c);
return completions;

原理说明

$0是VS Code代码片段语法里的最终光标占位符,和$1这类需要Tab跳转的占位符不同,编辑器插入片段后会直接将光标定位在$0的位置,无需额外操作,刚好匹配你要的“直接输入括号内内容”的需求。

备选方案(模拟Go扩展的光标逻辑)

如果你想通过命令手动调整光标位置,也可以用cursorMove命令实现:

const c = new vscode.CompletionItem('@{}');
c.range = new vscode.Range(position.translate(0, -1), position);
c.insertText = '@{}';
// 插入后让光标向左移动一位,从}的位置移到括号中间
c.command = {
  command: 'cursorMove',
  arguments: [{ to: 'left', by: 'character', value: 1 }],
  title: 'Move cursor inside braces'
};
completions.push(c);
return completions;

推荐第一种方案,因为它是VS Code补全系统原生支持的方式,逻辑更简洁稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 11:47:52