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
相关产品推荐
相关产品推荐

