【问题标题】:VS Code Snippet w/ placeholder transform and tab stop带有占位符转换和制表位的 VS 代码片段
【发布时间】:2021-03-07 18:17:50
【问题描述】:

我想要一个带有两个制表位的 sn-p。第一个制表位应该允许用户输入文本。第二个制表位应默认为占位符,它是第一个制表位的文本转换。但是,应该选择第二个制表位的转换值(即突出显示),以便用户可以轻松地使用自定义值覆盖它。

这是一个几乎可以工作的示例 sn-p:

"Test Case": {
  "prefix": "tc",
  "body": [
    "TS1: $1",
    "TS2: ${2:${1/(.*)/${1:/upcase}/}}",
    "$0"
  ],
  "description": "Test case to demonstrate issue"
}

当您在 TS1 中输入值后按 Tab 键时,光标会转到转换后的 TS2 值的 end -- 但我希望它像其他占位符一样工作,并且已经选择了整个值(而不是末尾的光标)。

有趣的是,如果我在 sn-p 中的${2: 之后放置一个空格,那么它选择整个值(如我所愿)但不幸的是它包括我插入的额外空间让它发生(我不想要)。

这里有什么我遗漏的技巧吗?

【问题讨论】:

    标签: visual-studio-code code-snippets vscode-snippets


    【解决方案1】:

    好消息是它已在当前的 Insiders Build v1.52 中修复!我想知道它是否被固定为https://github.com/microsoft/vscode/pull/108964 的附带好处?


    [在我检查 Insiders' Build 之前]:

    我以前见过这种确切的情况,并且总是打算提出问题,但不幸的是从未这样做过。这绝对是一个错误。有时你可以根据你在 sn-p 中实际想要做的事情来解决它。

    在您的情况下,您想选择转换后的版本。但是您可以“反转”转换并选择未转换的版本ala:

    // "TS1: $1",
    // "TS2: ${2:${1/(.*)/${1:/upcase}/}}",    // your code
    // "$0"
    
    "TS1: ${1/(.*)/${1:/downcase}/}",
    "TS2: ${2:$1}",
    "$0"
    

    你看我现在选择的是非转换版本和upcaseing 第一个而不是downcaseing 第二个。并且选择将起作用。

    这完全取决于您的具体情况是否可以使用这种“解决方法” - 您可能会做一些比简单的大写 小写交换更复杂的事情,这将根据您的实际输入进行修复。您可以在删除不需要的空间的宏中调用此 sn-p ,但这必须由键绑定而不是 sn-p 前缀触发,因此不是最佳的。或者第二个 sn-p 作用于现在选择的单词和前面的空格。

    【讨论】:

    • 谢谢,马克!很高兴知道(a)我并不孤单遇到此类问题,并且(b)它似乎在即将发布的版本中得到修复!不幸的是,我的实际用例比大写/小写更复杂,因此替代方法不起作用。尽管如此,我还是满足于等待该错误修复使其成为正式版本!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    相关资源
    最近更新 更多