vscode 嵌套代码段选项并向选项添加制表位

vscode Nest snippet choices and add tab stops to choices

我想在我的 visual studio 代码片段中做类似的事情:

"V.G.${1|BLOCK_NR,MASS_MM,MASS_360,I,J,K,R,FEEDRATE,FEEDRATE_SCALE,MERR[]|}" 所以在选择选项 MERR[] 后,我会在括号内看到光标。

以及我如何管理子选择,例如:

"V.G.${1|choice${2|subchoiceA,subchoiceB|},choice, choice......}"

如果我选择 MERR[] 选项,我将跳转到 [Cursor should be here]。我该如何处理?

这是您的 subchoiceA/B 问题的解决方法,因为除了纯文本之外,您不能选择任何其他内容 - 没有制表位或子选项等。您的示例:

V.G.${1|choice${2|subchoiceA,subchoiceB|},choice, choice......}"

这可以通过 2 个片段实现:

"choices with subchoices": {
  "prefix": "_choices",   // whatever prefix you want    
  "body": [
    "V.G.${1|choice1, _subchoices,choice2,choice3|}"
  ],    
  "description": "variables in a choice element"
},

"my subchoice list": {
  "prefix": "_subchoices",       // this prefix must be what you used in the main snippet
                                // as your subchoice option
  "body": [ "${1|subchoiceA,subchoiceB|}" ],
  "description": "subChoices"
},

发生的事情是,当您在主代码段中选择 subchoices 选项时,它会将其视为第二个代码段的前缀 - 这非常简洁。但它不会这样做,直到您使用 Ctrl+Space 通常的智能感知触发器然后 触发识别tab 到 select 第二个片段。

只需多敲一两下键盘,子选项就可以在父选项元素中工作,否则根本无法完成。

唯一的问题是您的第二个前缀 - 这里 subchoices 不能是另一个没有 space 的字符串的延续,否则它不会被 [= 识别为独立的片段前缀42=]。这就是为什么我在主代码段的 subchoices 之前添加 space 的原因,因为您的示例在插入选项之前有 "V.G.${1....} 而没有 space 。

这是一个演示: