Изменить/Добавить подсветку синтаксиса для языка в Sublime 2/3

Я хочу изменить/добавить подсветку синтаксиса для языка в Sublime 2/3.

Например, я хочу, чтобы ключевое слово this было окрашено в JavaScript.

Как я могу это сделать?

Я знаю, что есть файл JavaScript предпочтения в C:\Program Files\Sublime Text 3\Packages, но я не знаю, что изменить или мне нужно создать новый файл предпочтений JavaScript где-то в этой папке %APPDATA%\Sublime Text 3.

Ответ 1

Подсветка синтаксиса контролируется используемой вами темой, доступной через Preferences -> Color Scheme. Темы выделяют различные ключевые слова, функции, переменные и т.д. С помощью областей, которые определяются рядом регулярных выражений, содержащихся в файле .tmLanguage в языковом каталоге/пакете. Например, файл JavaScript.tmLanguage присваивает области source.js и variable.language.js ключевому слову this. Поскольку Sublime Text 3 использует формат файла .sublime-package zip для хранения всех настроек по умолчанию, это не очень просто редактировать отдельные файлы.

К сожалению, не все темы содержат все области, поэтому вам нужно поиграть с разными, чтобы найти то, что выглядит хорошо, и дает вам подсветку, которую вы ищете. Существует ряд тем, которые включены в Sublime Text, и многие другие доступны через Package Control, который я сильно рекомендуем устанавливать, если вы еще этого не сделали. Убедитесь, что вы следуете инструкциям Neon Color Scheme, доступный через Control Package, который вы, возможно, захотите взглянуть на, Моя главная цель, помимо того, что мы стараемся сделать широкий диапазон языков, как можно лучше, заключалась в том, чтобы определить как можно больше различных областей - гораздо больше, чем включены в стандартные темы. Хотя определение языка JavaScript не так тщательно, как Python, например, Neon все еще имеет гораздо большее разнообразие, чем некоторые из значений по умолчанию, таких как Monokai или Solarized.

jQuery highlighted with Neon Theme

Я должен отметить, что я использовал определение @int3h Better JavaScript для этого изображения вместо того, которое поставляется с Sublime. Он может быть установлен с помощью управления пакетами.

UPDATE

В последнее время я обнаружил другое определение языка JavaScript - JavaScriptNext - ES6 Syntax. Он имеет больше возможностей, чем базовый JavaScript или даже лучший JavaScript. Это похоже на тот же код:

JavaScriptNext

Кроме того, поскольку я изначально написал этот ответ, @skuroda выпустила PackageResourceViewer через Управление пакетами. Это позволяет вам легко просматривать, редактировать и/или извлекать части или целые пакеты .sublime-package. Итак, если вы выберете, вы можете напрямую редактировать цветовые схемы, включенные в Sublime.

ДРУГОЕ ОБНОВЛЕНИЕ

С выпуском почти всех пакетов по умолчанию в Github изменения происходят быстро и яростно. Старый синтаксис JS был полностью переписан, чтобы включить лучшие части JavaScript Next ES6 Syntax, и теперь он полностью совместим с ES6, как может быть. Тонна других изменений была сделана, чтобы охватить краевые и крайние случаи, улучшить согласованность и просто улучшить их. Новый синтаксис был включен в (в это время) последний dev build 3111.

Если вы хотите использовать любой из новых синтаксисов с текущей beta build 3103, просто клонируйте репозиторий Github где-нибудь и свяжите JavaScript (или любой язык, который вы хотите), в свой каталог Packages - найдите его в своей системе, выбрав Preferences -> Browse Packages.... Затем просто делайте git pull в исходном каталоге репо, чтобы обновлять любые изменения, и вы можете наслаждаться последним и самым большим! Следует отметить, что репо использует новый .sublime-syntax формат вместо старого .tmLanguage, поэтому они не будут работать с ранее созданными сборками ST3 до 3084 или с ST2 (в обоих случаях вы должны были обновиться до последней версии бета-версии или dev-сборки).

В настоящее время я настраиваю Neon Color Scheme для обработки всех новых областей в новом синтаксисе JS, но большинство из них должно быть уже рассмотрено.

Ответ 2

Наконец-то я нашел способ настроить заданные темы.

Перейдите к C:\Program Files\Sublime Text 3\Packages и скопируйте + переименуйте Color Scheme - Default.sublime-package в Color Scheme - Default.zip. Затем разархивируйте его и скопируйте тему, которую хотите изменить на %APPDATA%\Sublime Text 3\Packages\User. (В моем случае All Hallow Eve.tmTheme).

Затем вы можете открыть его с помощью любого текстового редактора и изменить/добавить что-то, например, для изменения this в JavaScript:

<dict>
    <key>name</key>
    <string>Lang Variable</string>
    <key>scope</key>
    <string>variable.language</string>
    <key>settings</key>
    <dict>
        <key>foreground</key>
        <string>#FF0000</string>
    </dict>
</dict>

Это отметит this в файлах JavaScript red. Вы можете выбрать свою тему в разделе Preferences -> Color Scheme -> User -> <Your Name>.

Ответ 3

Используйте плагин PackageResourceViewer, установленный с помощью управления пакетами (как указано MattDMo). Это позволяет вам переопределять сжатые ресурсы, просто открывая его в Sublime Text и сохраняя файл. Он автоматически сохраняет только отредактированные ресурсы в% APPDATA%/Roaming/Sublime Text 3/Packages/или ~/.config/sublime-text-3/Packages/.

Конкретно для op, как только плагин установлен, выполните команду PackageResourceViewer: Open Resource. Затем выберите JavaScript, а затем JavaScript.tmLanguage. Это откроет XML файл в редакторе. Вы можете редактировать любые определения языка и сохранять файл. Это приведет к записи переопределенной копии файла JavaScript.tmLanguage в каталог пользователя.

Тот же метод может быть использован для редактирования языкового определения любого языка в системе.

Ответ 4

"this" уже окрашен в Javascript.

Вид- > Синтаксис- > и выберите язык для выделения.