Как заставить VS Code рассматривать расширения файлов как определенный язык?

Или есть способ переключить язык текущего файла, чтобы синтаксис был правильно выделен?

Например, *.jsx на самом деле является JavaScript, но VS Code его не распознает.


person John Deev    schedule 30.04.2015    source источник


Ответы (10)


В Visual Studio Code вы можете добавить постоянные ассоциации файлов для выделения языков в свой 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 г.). Проверьте доступные шаблоны с подстановочными знаками в примечаниях к выпуску и строки на известном языке в документации.

person Josien    schedule 22.04.2016
comment
Значением ассоциации должен быть идентификатор языка / плагина, а не имя. Например, установленный мной плагин VBScript с идентификатором vbs. * .vms: vbs получает настраиваемое расширение для правильного связывания. - person Matt M; 01.03.2018
comment
Только что столкнулся с подобной проблемой. Если добавление ассоциации файлов не работает, убедитесь, что у вас нет закрытого файла .editorconfig, или выровняйте конфигурации между VSCode и .editorconfig, последний будет иметь приоритет. - person RecuencoJones; 22.06.2018
comment
Вы также можете поместить эти настройки в ${projectdir}/.vscode/settings.json файл для конкретного проекта. - person Jason; 18.01.2020
comment
Я добавил .ps1 как ассоциацию и включил расширение ps, но синтаксис не завершен, я использую windows 10 и vscode 1.51.1, созданный 14 дней назад. - person Timo; 24.11.2020
comment
ctrl + shit + p ничего не делает для меня. каков путь к меню редактора? - person TatiOverflow; 07.02.2021
comment
@TatiOverflow В меню это Просмотр - ›Палитра команд. (Но вы можете попробовать кнопку Shift вместо дерьмовой кнопки, она тоже для меня мало что делает.) - person Josien; 09.02.2021
comment
@MattM Но чтобы найти правильное имя идентификатора, вам нужно: Ctrl + Shift + P (или Cmd на Mac) и выбрать Изменить языковой режим, и в отображаемом списке вы увидите идентификатор языка (например, dockerfile для Docker или летучая мышь для партии) - person Alex; 19.04.2021

Удерживая Ctrl + Shift + P (или cmd на Mac), выберите «Изменить языковой режим», и вот оно.

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

person John Deev    schedule 30.04.2015
comment
Похоже, есть ярлык непосредственно на Change Language Mode; Alt+K, M - person Stafford Williams; 25.03.2018
comment
Cmd+K, M для Mac. - person Katrina; 19.12.2019
comment
Это вполне возможно. См. Мой ответ ниже: stackoverflow.com/a/51228725/3307796 - person JoelAZ; 19.03.2020
comment
Зачем нужна ассоциация файлов в VSC, если она не помогает? - person Timo; 01.12.2020
comment
ctrl + shit + p у меня не работает. какой обычный метод без ярлыков? - person TatiOverflow; 07.02.2021

Самый простой способ, который я нашел для глобальной ассоциации, - это просто нажать ctrl + k m (или ctrl + shift + p и ввести «изменить языковой режим») с файлом того типа, который вы связываете, открытым.

В первом выборе будет «Настроить сопоставление файлов для 'x'» (независимо от типа файла - см. Прикрепленное изображение). Выбор этого параметра делает сопоставление типа файла постоянным.

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

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

person JoelAZ    schedule 08.07.2018
comment
Спасибо, у меня это сработало. При ручном редактировании settings.json файла было непонятно, каким должен быть идентификатор расширения, но этот метод отсортировал его! - person ccbunney; 15.10.2019
comment
Добро пожаловать на @ccbunney, рад, что это помогло. Это была точно такая же проблема, что и у меня - и я так и не понял, какой идентификатор расширения мне нужен, лол. В любом случае, я был очень рад найти это решение для себя, и здорово, что оно помогает другим людям! : D - person JoelAZ; 03.12.2019
comment
Просто любопытно, никогда не слышал о .ps1data в том виде, в котором он показан в вашем img. - person Timo; 24.11.2020
comment
@timo ¯_ (ツ) _ / ¯ Я тоже, и я никогда особо не замечали это раньше, но вот оно ... Возможно, это результат опечатки во время какой-то более ранней настройки, idk. Срай больше ничем не может помочь. - person JoelAZ; 25.11.2020
comment
У этого решения есть существенное преимущество. Другие решения требуют, чтобы вы знали заранее, что такое идентификатор языка. Это нормально для предопределенных значений, таких как java, как указано в code.visualstudio. com / docs / languages ​​/, но мы не сможем установить расширения VS Code. Например, я установил расширение Apache для файлов Apache *.conf, и идентификатор языка оказался apacheconf - как я мог это догадаться? Я выяснил это, следуя приведенному выше решению. Затем я могу отредактировать settings.json для дальнейшего взлома сопоставления. - person Vincent Yin; 16.05.2021
comment
@VincentYin совершенно верно. Это самое простое решение по этой причине и по той же причине, по которой я нашел это решение в первую очередь - не знал, какой язык. идентификатор оказался тем, что мне было нужно. Рад, что люди нашли это полезным. - person JoelAZ; 03.07.2021

У меня это работает.

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

{
"files.associations": {"*.bitesize": "yaml"}
 }
person Isura Amarasinghe    schedule 04.08.2018

Это, например, приведет к тому, что файлы, заканчивающиеся на .variables и .overrides, будут обрабатываться так же, как и любой другой файл LESS. С точки зрения раскраски кода, с точки зрения (авто) форматирования. Определите в пользовательских настройках или настройках проекта, как хотите.

(Семантический интерфейс использует эти странные расширения, если вам интересно)

person Frank Nocke    schedule 13.09.2017


Следуя инструкциям на странице https://code.visualstudio.com/docs/customization/colorizer#_common-questions:

Чтобы расширить существующий колоризер, вы должны создать простой package.json в новой папке в .vscode / extensions и предоставить атрибут extensionDependencies, указывающий настройку, которую вы хотите добавить. В приведенном ниже примере к разметке уценки добавлено расширение .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"]
        }]
    }
}
person MicMro    schedule 10.03.2016

Вы можете добавить расширение md.html к своим settings.json ассоциациям файлов, чтобы включить форматирование markdown для таких файлов markdeep :

    "files.associations": {
        "*.md.html": "markdown"
    },

Файл settings.json находится в разных местах в зависимости от вашей ОС. Например, в macOS это ~/Library/Application Support/Code/User/settings.json. Вы можете открывать и редактировать его с помощью Ctrl + Shift + p в VS Code.

person dirkk0    schedule 29.03.2021

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

Как вы можете видеть в коде, я создал новое расширение, а не модифицировал существующее расширение PHP. Очевидно, я заявляю о зависимости от расширения PHP в расширении Drupal.

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

person mastazi    schedule 24.11.2015

person    schedule
comment
Отлично. Это удобно, если у вас одно и то же расширение, но разные языковые парсеры в зависимости от пути. Например. у вас может быть yml для обработки конвейеров Concourse в одной папке и файлов Ansible в другой. - person Christian Maslen; 18.07.2017
comment
Если бы я мог, я бы проголосовал за это дважды. Пытался сохранить синтаксис для моих макетов и партиалов Nanoc с расширением .html, это решило проблему: "**/layouts/**/*.html": "erb" - стоит отметить, что раскрывающийся список языкового режима VSCode показывает фактическое имя подсветки синтаксиса в скобках, например. Ruby ERB (erb) - person Dave Everitt; 31.12.2019
comment
У меня это работает, однако, как побочная проблема, equinusocio.vsc-material-theme-icons неправильно сопоставляет значки с этими типами. - person ux.engineer; 20.08.2020