VS код php тег автозаполнения

Вроде тривиальный вопрос, но здесь он идет. Я не могу понять, почему VS Code автоматически заполняет (с вкладкой) все HTML-теги правильно, а php-тег - нет. Когда я набираю "php" и нажимаю вкладку, он создает это:

<php></php>

что бесполезно, и я понятия не имею, почему это там. Я хочу, чтобы это сделал обычный тег php

<?php ?>

Я отключил предложения, поскольку они отвлекали меня. Как бы то ни было, чтобы отредактировать стандартный / верхний элемент "автозаполнение вкладки"?

9 ответов

Этот взлом сработал для меня: перейдите в "Настройки: Открыть пользовательские фрагменты" и вставьте этот фрагмент в html (да, это HTML) фрагменты пользователя:

"php": {
    "prefix": "php",
    "body": [
        "<?php $1 ?>"
    ],
    "description": "php tag"
}

Я бы уточнил ответ Лейна, поместив последний курсор, представленный $0, в новую строку между тегами. Во фрагменте каждая запятая внутри массива body представляет новую строку.

Поэтому в Visual Sutiio Code перейдите в "Файл"> "Установки"> "Пользовательские фрагменты", найдите "html.json" и отредактируйте его, вставив следующее:

{
  // Place your snippets for html here. 
  "php": {
    "prefix": "php",
    "body": ["<?php", "$0", "?>"],
    "description": "php tag"
  }
}

В Visual Studio Code перейдите в "Файл"> "Установки"> "Отрывки пользователя"> "html.json" и вставьте этот код:

"php": {
    "prefix": "php",
    "body": [
        "<?php $1 ; ?>",
        "$2"
    ],
    "description": "php tag"
}

В разделе File > Preferences есть User Snippets, используйте html для добавления фрагментов php.

{
  "Snippet name": {
  "prefix": ["keywords", "for", "finding"],
  "body": [
    "<?php ${1:placeholder} ?>"
  ],
  "description": "A php tag."
  }
}

$1, $2 и т. Д. - это переменные, которые будут в фокусе при вводе фрагмента. Вы также можете использовать заполнитель, как показано в моем примере.

Для многострочного текста завершите текущую строку запятой и добавьте содержимое в новую строку в " ". Вы можете найти больше информации о создании собственных сниппетов в VS Code здесь:

https://code.visualstudio.com/docs/editor/userdefinedsnippets

зайдите в File> Preferences> User Snippets, теперь напишите в bar php и нажмите Enter.

vs code создать файл с именем php.code-snippets, теперь вставьте это:

        { 

    // Place your GLOBAL snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and 
    // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
    // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is 
    // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: 
    // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. 
    // Placeholders with the same ids are connected.
    // Example:
    "php": {
            
        "prefix": "php",
        "body": [
            "<?php //put here code ?>"
        ],
        "description": "php tag"
    } 
}

Как я понял из вашего вопроса, вы не добавили внешнее расширение PHP IntelliSense и не использовали стандартное PHP IntelliSense, предоставляемое кодом VS. Если это так, вам нужно добавить расширение в редактор кода Visual Studio.

Чтобы добавить расширение, используйте клавиатуру и нажмите Ctrl+Shift+p, вы получите командную палитру и введите следующую команду Extensions: Install Extension затем на левой панели редактора вы получите возможность искать расширения, вы можете искать PHP IntelliSense и установите его. Редактор попросит перезапустить редактор, чтобы применить расширение.

Я рекомендую отключить встроенный PHP-код VS IntelliSense, добавив следующее свойство "php.suggest.basic":false к настройкам json config редактора (клавиатура нажмите Ctrl+, вы получите настройки json справа от редактора), чтобы избежать дублирования предложений.

Для работы PHP IntelliSense Вам необходимо установить хотя бы PHP 7. Вы можете добавить его в PATH или установить "php.executablePath":"php physical path" в настройках json (нажмите Ctrl+, вы получите настройки json)

Очень полезный вопрос и ответы, всем спасибо. Я также упустил возможность автоматически закрывать и повторно открывать теги php из тега php в коде VS, поэтому я попытался поместить аналогичный фрагмент в файл php.json и... он работает, как и ожидалось! Это не совсем ответ на исходный вопрос, но он все еще тесно связан.

          "php": {
    "prefix": "php",
    "body": [
            "?>$0<?php"
    ],
    "description": "php tag"
}

Я предпочитаю настраиваемое сочетание клавиш, добавленное в keybindings.json - это позволяет добавлять теги php в тех местах, где intellisense не работает должным образом, например, внутри кавычек атрибутов html. Вы также можете выбрать некоторый текст (возможно, вы скопировали несколько php из других источников без полных тегов php) и автоматически обернуть его в теги php. Вот что я использую:

{
  "key": "cmd+alt+ctrl+p",
  "command": "editor.action.insertSnippet",
  "when": "editorTextFocus",
  "args": {
    "snippet": "<?php $1$TM_SELECTED_TEXT$0 ?>"
  }
}

Возможно , вам стоит установить расширение PHP Awesome Snippetts.

Другие вопросы по тегам