【问题标题】:VSCode Snippet trigger with text before?VSCode Snippet 之前触发文本?
【发布时间】:2019-05-07 10:01:35
【问题描述】:

我想在 VSCode 中创建一个显示 PHP 箭头的 sn-p。 当我按“²”键然后按 TAB 键时,我想要 PHP 箭头“->”。

这是我的 sn-p 代码

"PHP arrow": {
    "prefix": "²",
    "body": "->$0",
    "description": "PHP Arrow ->"
},

当“²”字符周围没有任何东西但是当我编写一些类似的代码时它工作正常

$this²

sn-p 没有被触发

我能做什么?

谢谢你,祝你有美好的一天:)

PS:² 字符在 VSCode 中是 oem_7

【问题讨论】:

  • 你用什么键来插入上标 2?

标签: php vscode-settings code-snippets


【解决方案1】:

我不知道您使用什么键击来插入上标 ²。但是,如果您尝试将其用作单词末尾的 sn-p,请尝试进行键绑定。

VSCode 无法知道该 ² 是否打算成为单词的一部分。

在您的 keybindings.json 中试试这个 - 而不是在 sn-p 文件中:

{
  "key": "2",
  "command": "editor.action.insertSnippet",
  "when": "resourceExtname == .php",
  "args": {
    "snippet": "->$0"
  }
}

输入 $this2 会产生 $this->

显然,您必须将上面的 2 键替换为您想要使用的任何内容。现在您可以将 sn-p 用作单词的一部分或单词的末尾,而无需任何必要的单词边界。

【讨论】:

    【解决方案2】:

    这个问题的根本原因是 VS Code 不知道 ² 应该被视为它自己的“单词”。如果考虑使用字母前缀的sn-p,这更容易理解,例如x

    "PHP arrow": {
        "prefix": "x",
        "body": "->$0",
        "description": "PHP Arrow ->"
    }
    

    如果您输入 ax|,则不会触发此 sn-p,因为 x 是单词 ax 的一部分,并且 x 的 sn-p 前缀与单词 ax 不匹配。

    在您的$this²| 示例中,用于检查前缀的单词是this²,sn-p 的前缀不匹配。


    @Mark 建议您提出替代工作流程可能是正确的。如果没有编写扩展程序,我认为您无法使当前的方法顺利运行

    【讨论】:

    • 感谢您的回答。祝你有美好的一天!
    猜你喜欢
    • 2023-03-24
    • 2019-12-17
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    相关资源
    最近更新 更多