VSCode 之前有文字的片段触发器?

VSCode Snippet trigger with text before?

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

这是我的代码片段

"PHP arrow": {
    "prefix": "²",
    "body": "->[=11=]",
    "description": "PHP Arrow ->"
},

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

$this²

代码段未被触发

我能做什么?

谢谢你,祝你有愉快的一天:)

PS: ² 字符是 oem_7 在 VSCode

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

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

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

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

键入 $this2 会得到 $this->:

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

这个问题的根本原因是 VS Code 不知道 ² 应该被视为它自己的 "word"。如果您考虑使用字母前缀的片段,例如 x:

,这将更容易理解
"PHP arrow": {
    "prefix": "x",
    "body": "->[=10=]",
    "description": "PHP Arrow ->"
}

如果您输入 ax|,则不会触发此代码段,因为 x 是单词 ax 的一部分,并且 x 的代码段前缀不匹配ax.

这个词

在您的 $this²| 示例中,用于检查前缀的词是 this²,该片段的前缀不匹配。


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