如何在已进入代码片段时,通过Tab补全触发新的代码片段?
我太懂这种困扰了!VS Code 默认的 Tab 行为确实会优先处理代码片段里的占位符跳转,导致你在占位符里输入其他片段的前缀时,按 Tab 直接跳走,根本不展开想要的片段。就像你举的这个例子:
"test": { "prefix": "t", "body": "|${1}|${2}", }, "text": { "prefix": "a", "body": "asdfghjkl", }
输入 t 触发 test 片段后得到 ||,在第一个占位符里输入 a 按 Tab,结果光标直接跳到第二个占位符,变成 |a|,但你真正想要的是把 a 展开成 asdfghjkl,得到 |asdfghjkl| 对吧?
给你几个可行的解决办法:
调整全局 Tab 补全设置
打开 VS Code 设置(Ctrl+, / Cmd+,),搜索editor.tabCompletion,把它改成"onlySnippets"或者"on"。这样当你在占位符里输入片段前缀后按 Tab,VS Code 会优先尝试匹配并展开对应的代码片段,只有当没有匹配的片段时才会跳转占位符。不过要注意,这个设置是全局的,可能会改变你平时使用 Tab 跳转占位符的习惯,需要适应一下。用快捷键手动触发片段展开
不想改全局设置的话,可以用 VS Code 默认的补全快捷键:Windows/Linux 按Ctrl+Space,Mac 按Cmd+Space。在占位符里输入a后,按下这个快捷键,就能看到匹配的text片段选项,选中它就能展开成asdfghjkl,之后再按 Tab 就能正常跳到下一个占位符了。自定义专属快捷键(进阶)
觉得默认快捷键麻烦?可以给「插入代码片段」功能设置一个专属快捷键。打开键盘快捷键设置(Ctrl+K Ctrl+S / Cmd+K Cmd+S),搜索Insert Snippet,然后添加一个你顺手的快捷键(比如Alt+Tab)。这样在占位符里输入前缀后,按这个自定义快捷键就能展开片段,完全不影响原来的 Tab 跳转占位符的行为。
一般来说,上面几种方法就能解决你的问题啦!
内容的提问来源于stack exchange,提问作者flylord1234

