Как выполнить табуляцию для нового фрагмента, уже находящегося в фрагменте?

#visual-studio-code #code-snippets #vscode-snippets

#visual-studio-code #фрагменты кода #vscode-сниппеты

Вопрос:

Если я уже нахожусь в фрагменте и нажимаю tab , я перейду к следующему заполнителю. Однако, если я уже нахожусь в заполнителе и ввел префикс, который должен вызвать другой фрагмент, если я нажму tab, я перейду к следующему заполнителю вместо расширения только что введенного префикса. Есть ли способ расширить префикс, который я только что ввел в фрагменте?

Вот пример:

     "test": {
        "prefix": "t",
        "body": "|${1}|${2}",
    },

    "text": {
        "prefix": "a",
        "body": "asdfghjkl",
    }
  

Если я введу t , я перейду к: ||
Если я введу a первый заполнитель и нажму tab, я получу: |a| где мой курсор находится на заполнителе $ {2}
, который я хотел бы получить: |asdfghjkl| вместо

Ответ №1:

Основная проблема заключается в том, что после ввода a у вас есть |a| , и vscode не распознает это a как префикс фрагмента. Похоже |a на vscode. Итак, если вы на самом деле сделали свой второй префикс | равным, который будет распознан как префикс, например:

 "text": {
  "prefix": "|a",
  "body": "asdfghjkl",
}
  

Вам все равно нужно Ctrl Space, чтобы показать предложения и Enterпринять предложение. A Tabпросто перейдите к следующей остановке табуляции

В качестве альтернативы, если бы вы могли вставить пробел, например

 "test4": {
  "prefix": "t",
  "body": "| ${1}|${2}",   // space added here
},
  

тогда вам не придется изменять второй фрагмент.


Кроме того, убедитесь, что у вас есть

Editor > Suggest: Snippets Prevent Quick Suggestions

отключено (по умолчанию включено), чтобы вы могли запускать предложения в первом фрагменте, но вы должны вручную запускать их самостоятельно с Ctrlпомощью Space, как упоминалось выше.