Неработающие фрагменты кода Visual Studio Code не работают

Я включил фрагмент "log" по умолчанию в VS Code. Я также добавил еще один фрагмент. Ни один из них не появляется, когда я печатаю их префиксы. Я установил editor.tabCompletion в true.

Любая идея, почему они не работают?

Ответ 1

Есть несколько способов решить эту проблему. Проблема заключается в том, что Intellisense мешает или по умолчанию помещает ваши фрагменты в нижней части списка.

Сначала я сыграл с задержкой предложения, но затем я решил, что Intellisense поместит мои фрагменты в верхнюю часть списка предложений с предпочтением пользователя snippetSuggestions:

{
  "editor.tabCompletion": true,
  "editor.snippetSuggestions": "top"
}

Ответ 2

Иногда очевидное, что упускается из виду первым. После запуска VSCode и создания нового документа (Ctrl + N) может удивить, что фрагменты не работают. Проверьте в правом нижнем углу редактора VSCode, по умолчанию представлен файл "Обычный текст". Измените тип файла на ваш любимый язык с помощью фрагментов кода.

Это может преодолеть некоторые ненужные проблемы со стрельбой ;-)

Ответ 3

Если вы пытаетесь вставить фрагменты PHP, стоит отметить, что вы должны вручную включить

<?php

прежде чем фрагменты начнут работать.

Ответ 4

На самом деле я обнаружил, что, когда у вас есть php intelliSense, и вы хотите, чтобы тег вкладки php открывался и закрывался, я добавил расширение также в тип файла html.

   {
      "Open php tag": {
         "scope": "php, html",
         "prefix": "php",
         "body": [
           "<?php",
             "  $1",
           "?>"
        ],
        "description": "Opens php tags"
      }
   }

Это сработало для меня:)

Ответ 5

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

Перезагрузился код VS, и они начали работать.

Ответ 6

Моя проблема заключалась в том, что некоторые фрагменты работали, а другие - нет. (например: JavaScript-фрагменты работали хорошо)

Моя проблема решена, когда я установил плагин, в который добавлена ​​соответствующая специальная ассоциация filetype (im my case: *.blade.php)

При создании UserSnippets в blade.json он работал нормально.

  • Проверьте расширение файла и посмотрите, есть ли подключаемый модуль для вашего типа файла.
  • Установите и повторите попытку добавления фрагмента.

Ответ 7

Для тех, кто ищет переопределенный фрагмент по умолчанию (журнал)

Переопределение фрагмента файла log.json не работало для меня в пользовательских фрагментах (по крайней мере, для Typescript).

Решение: я создал новый глобальный фрагмент ("Файл"> "Настройки"> "Пользовательские фрагменты"> "Новый глобальный фрагмент кода") с другим именем "clog" (полное имя: "clog.code-snippets") и префиксом, и это сработало.

Ответ 8

Я пытался установить фрагмент, чтобы автоматически добавлять открытые и закрытые теги php в свой файл, поскольку Robert Cooper отметил, что он работал только тогда, когда я уже писал внутри блок типа конкретного кода.

Поэтому я устанавливал !p для загрузки <?php$1?> всякий раз, когда я использую его внутри блока HTML. Фрагмент был установлен в файл html.json.

Ответ 9

В моем случае это не сработало, потому что у меня был пробел в имени фрагмента

{
  ...,
  "snippet name": { // it should be snippet_name. Notice the _
    ...
  }
}

Поэтому убедитесь, что:

  1. У вас есть файл {name}.code-snippets папке .vscode
  2. Название вашего фрагмента не содержит spaces
  3. Вы включаете ваш язык в сферу. Мне пришлось добавить как typescript и typescriptreact.

Ответ 10

Не забудьте указать язык в глобальном фрагменте. В моем случае это исправлено.

{
  "Print to console": {
        "scope": "javascript,vuex,vue",
        "prefix": "debes",
        "body": [
            "// eslint-disable-next-line",
            "debugger;"
        ],
        "description": "Log output to console"
    }
}