有没有办法添加带有 VS 代码片段占位符选项的空白选项?

Is there a way to add a blank option with VS Code snippets placeholder choices?

我正在尝试创建一个片段,让我可以选择可选属性。我过去使用过这种方法,我只是在 placeholder 中放置一个空白 space 作为 choice。当代码片段的其他部分之间只有一个选项时,这是有效的,但就像在下面的示例中,如果我想跳过两个占位符(装饰上的可选属性),在生成的代码中会有多个 spaces,我必须手动删除。

"Adorn": 
  "prefix": ["adorn"],
  "body": [
    "<%= adorn${1| , color: :blue, color: :white|}${2| , inline: true|} do |a| %>",
      "\t[=10=]",
        "\t<%= a.adornment %>",
          "\t\t",
        "\t<% end %>",
    "<% end %>"
  ],
  "description": "An adorn"
},

据我所知 in the documentation 使用 placeholderschoices 似乎无法完成我想做的事情。我以为我可以使用一个变量并将其解析为空字符串,但语法似乎不允许这样做。

还有其他方法可以完成我想做的事情吗?

你可以在代码片段中使用一些 unicode 字符,所以我试了回来space(没有用)但是 \u200B 这是一个 " 零宽度 space" 确实如此。所以你可以在你的选择中这样做:

{1|\u200B, color: :blue, color: :white|}${2|\u200B, inline: true|}

如果您选择空白(即 \u200B),将插入零宽度 space。你得到了你想要的 - 没有 spaces 被删除。

但我留给您看看在您的代码中使用该字符是否存在任何解析或其他问题。也许这在您的语言中是或不是问题。查看未解决的问题(我最初发布此答案后发现的)https://github.com/microsoft/vscode/issues/34368(“允许“空”作为片段中的选择 ") 零宽度 space 选项被警告反对并可能导致问题 - 所以测试它。除了您尝试过的常规 space 之外,看起来没有任何其他选项。

我尝试了“null”\u0000,但 vscode 无法识别它。

如果您只需要一个空白 space,那么只需要一个占位符 '$1'。

但首先让我们看看您是否有错误

第一个

在 yow 项目的根目录你需要一个新的目录调用。vscode

在 yow 目录中添加一个新文件 注意 名称非常重要,新文件的名称必须具有此模式 any.code-snippets

在新文件旁边添加这个

{
    // Place your global snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
    // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
    // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
    // used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
    // ,  for tab stops, [=10=] for the final cursor position, and ${1:label}, ${2:another} for placeholders.
    // Placeholders with the same ids are connected.
    // Example:
     "Print to console": {
        "scope": "javascript,typescript",
        "prefix": "log",
        "body": [
            "console.log('');",
            ""
        ],
        "description": "Log output to console"
     }
}

最后,我建议您删除 scope 属性。并且不要将文件用于一种以上的语言,因为如果这样做,它可能根本无法工作。

为带选项的占位符获取空值的最佳方法是添加 1 个字符的选项,然后使用 Delete 或 Backspace 删除它(取决于光标所在的位置,这两个占位符不同),然后使用 TAB到下一个占位符。

要获取占位符 2 的选择列表,请在位于占位符 2 时按 TAB 键。

注意分隔空格的位置,它们在选项的末尾。

  "Adorn": {
    "prefix": ["adorn"],
    "body": [
      "<%= adorn ${1|e,color: :blue ,color: :white |}${2|e,inline: true |}do |a| %>",
        "\t[=10=]",
          "\t<%= a.adornment %>",
            "\t\t",
          "\t<% end %>",
      "<% end %>"
    ],
    "description": "An adorn"
  }