VSCode Фрагмент фрагмента с текстом раньше? - PullRequest
1 голос
/ 07 мая 2019

Я хочу создать фрагмент в VSCode, который отображает стрелку PHP. Когда я нажимаю клавишу «²», тогда вкладка я хочу стрелку PHP «->».

Вот мой фрагмент кода

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

Работает нормально, когда вокруг символа «²» ничего нет, но когда я пишу какой-то код, например

$this²

фрагмент не сработал

Что я могу сделать?

Спасибо и хорошего дня:)

PS: ² символ oem_7 в VSCode

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Основная причина этой проблемы заключается в том, что VS Code не знает, что ² следует рассматривать как свое собственное «слово».Это легче понять, если рассмотреть фрагмент, который использует буквенный префикс, такой как x:

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

Этот фрагмент не будет запущен, если вы введете ax|, поскольку x является частьюслова ax, а префикс фрагмента x не соответствует слову ax.

В вашем примере $this²| слово, используемое для проверки префикса, равно this², чтопрефикс фрагмента не совпадает.


@ Марк, вероятно, прав, предлагая альтернативный рабочий процесс.Если не считать расширения, я не думаю, что вы можете сделать свой текущий подход гладким

0 голосов
/ 08 мая 2019

Я не знаю, какие нажатия клавиш вы используете, чтобы вставить верхний индекс ². Но если вы пытаетесь использовать его в качестве фрагмента в конце слова, попробуйте вместо этого создать связывание клавиш.

VSCode не может узнать, предназначен ли это ² как часть слова или нет.

Попробуйте это в вашем keybindings.json , а не в файле сниппета:

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

Набрав $this2, получим $this->:

php snippet demo

Очевидно, вам придется заменить ключ 2 выше на то, что вы хотите использовать. Теперь вы можете использовать фрагмент как часть слова или в конце слова без какой-либо необходимой границы слова.

...