Як зробити так, щоб код VS розглядав інші розширення файлів як певну мову?


332

Або є спосіб переключити мову поточного файлу на функцію виділення синтаксису?

Наприклад, *.jsxнасправді використовується JavaScript, але VS-код не розпізнає його.

Відповіді:


500

У коді Visual Studio ви можете додати стійкі асоціації файлів для виділення мови у settings.jsonфайл таким чином:

// Place your settings in this file to overwrite the default settings
{
  "some_setting": custom_value,
  ...

  "files.associations": {
    "*.thor": "ruby",
    "*.jsx": "javascript",
    "Jenkinsfile*": "groovy"
  }
}

Ви можете використовувати Ctrl+ Shift+, pа потім набрати settings JSON. Виберіть Налаштування: Відкрийте Налаштування (JSON), щоб відкрити свій settings.json.

Ця Files: Associationsфункція вперше була представлена ​​у Visual Studio Code версії 1.0 (березень 2016 року). Перевірте наявні шаблони символів у примітках до випуску та відомі мовні рядки в документації.


6
Значенням для асоціації має бути ідентифікатор мови / плагіна, а не ім’я. Наприклад, я встановив плагін VBScript, ідентифікатор - vbs. "* .vms": "vbs" отримує спеціальне розширення для належного асоціювання.
Метт Меррілл

Щойно зіткнувся з подібним питанням. Якщо додавання файлової асоціації не працює, переконайтеся, що у вас немає .editorconfigфайлу в закритому режимі або вирівняйте конфігурації між VSCode і .editorconfig, остання матиме перевагу
RecuencoJones

Ви також можете розмістити ці налаштування у ${projectdir}/.vscode/settings.jsonфайлі, визначеному для проекту .
Джейсон

108

Утримуючи Ctrl + Shift + P (або cmd на Mac), виберіть "Змінити мовний режим" і ось він.

Але я досі не можу знайти спосіб зробити файли, розпізнані VS-кодом із певним розширенням як певну мову.


3
Здається, є ярлик безпосередньо до Change Language Mode; Alt+K, M
Стаффорд Вільямс

Cmd+K, Mдля Mac.
GreeKatrina

Це дуже можливо. Дивіться мою відповідь нижче: stackoverflow.com/a/51228725/3307796
JoelAZ

69

Найпростіший спосіб, який я знайшов для глобальної асоціації, - це просто ctrl + km (або ctrl + shift + p і ввести "змінити режим мови") з файлом типу, який ви асоціюєте, відкритим.

У перших виборах буде "Налаштувати асоціацію файлів для" x "" (незалежно від типу файлу - див. Зображення, що додається).

введіть тут опис зображення

Це, можливо, змінилося (напевно, було) з початкового запитання та прийнятої відповіді (і я не знаю, коли воно змінилося), але це набагато простіше, ніж кроки редагування вручну в прийнятих та деяких інших відповідях, і загалом уникає наявності до мід з ідентифікаторами, які можуть бути не очевидними.


2
Спасибі - це працювало для мене. Під час ручного редагування settings.jsonфайлу було незрозуміло, яким повинен бути ідентифікатор розширення, але цей метод сортував його!
ccbunney

1
Вас вітає @ccbunney, радий, що це допомагає. Це була точно така ж проблема, яку я мав - і я ніколи не з'ясовував потрібне мені ідентифікатор розширення, lol. У всякому разі, я був дуже радий знайти це рішення для себе, і це здорово, що він допомагає іншим ppl! : D
JoelAZ

33

наприклад:

// .vscode/settings.json in workspace

{
  "files.associations": {
    "*Container.js": "javascriptreact",
    "**/components/*/*.js": "javascriptreact",
    "**/config/routes.js": "javascriptreact"
  }
}

1
Приємно. Це стане в нагоді, якщо у вас є те саме розширення, але різні мовні аналізатори на основі шляху. Наприклад, у вас може бути yml для обробки конвеєрів Concourse в одній папці та файлів Ansible в іншій.
Крістіан Маслен

Я б схвалив це двічі, якби міг. Намагаючись зберегти синтаксис для моїх макетів Nanoc та частинок із розширенням .html, це вирішило це: "**/layouts/**/*.html": "erb"- Варто зазначити, що спадне меню "мовний режим" VSCode показує фактичну назву підсвічувача синтаксису в дужках, наприкладRuby ERB (erb)
Дейв Еверітт


12

Наприклад, це призведе до того, що файли закінчуються .variablesта .overridesобробляються так само, як і будь-який інший файл. З точки зору забарвлення коду, з точки зору (автоматичного) форматування. Визначте в налаштуваннях користувача або налаштуваннях проекту, як вам подобається.

(Semantic UI використовує ці дивні розширення, якщо вам цікаво)



8

Виконуючи кроки на https://code.visualstudio.com/docs/customization/colorizer#_common-questions, для мене добре працювали:

Щоб розширити існуючий колоризатор, ви створили простий package.json у новій папці під .vscode / extensions та надали атрибут extensionDependitions, що визначає налаштування, до якого потрібно додати. У наведеному нижче прикладі до колоризатора розмітки додається розширення .mmd. Зауважте, що не тільки ім'я extensionDependency повинно відповідати налаштуванню, але й ідентифікатор мови повинен відповідати мовному ідентифікатору колоризатора, який ви поширюєте.

{
    "name": "MyMarkdown",
    "version": "0.0.1",
    "engines": {
        "vscode": "0.10.x"
    },
    "publisher": "none",
    "extensionDependencies": [
        "markdown"
    ],
    "contributes": {
        "languages": [{
            "id": "markdown",
            "aliases": ["mmd"],
            "extensions": [".mmd"]
        }]
    }
}

5

Я дотримувався іншого підходу, щоб вирішити майже таку ж проблему, в моєму випадку я зробив нове розширення, яке додає PHP-синтаксис, що підкреслює підтримку файлів, характерних для Drupal (таких як .module та .inc): https: // github. com / mastazi / VS-код-drupal

Як ви бачите в коді, я створив нове розширення, а не змінював існуюче розширення PHP. Очевидно, я заявляю про залежність від розширення PHP у розширенні Drupal.

Перевага зробити це таким чином, що якщо є оновлення розширення PHP, моя спеціальна підтримка Drupal не втрачається в процесі оновлення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.