Змінення / додавання підсвічування синтаксису для мови в Sublime 2/3


94

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

Наприклад, я хочу, щоб ключове слово було thisкольоровим у JavaScript.

Як я можу це зробити?

Я знаю, що є вподобаний файл JavaScript у файлі C:\Program Files\Sublime Text 3\Packages, але я не знаю, що потрібно змінити, чи потрібно створити новий файл налаштувань JavaScript десь у цій папці %APPDATA%\Sublime Text 3.

Відповіді:


95

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

На жаль, не всі теми містять усі сфери, тому вам потрібно буде пограти з різними, щоб знайти той, який виглядає добре, і дасть вам виділення, яке ви шукаєте. Існує ряд тем, які входять до тексту Sublime Text, і багато іншого доступні за допомогою Package Control , який я настійно рекомендую встановлювати, якщо ви ще цього не зробили. Переконайтеся, що ви дотримуєтесь інструкцій ST3 .

Як це трапляється, я розробив Neon Color Schemeдоступний за допомогою пакета контроль, на який ви можете поглянути. Моя основна мета, крім того, щоб намагатися зробити якомога краще виглядати широкий діапазон мов, полягала в тому, щоб визначити якомога більше різних областей - набагато більше, ніж включено до стандартних тем. Хоча визначення мови JavaScript не є настільки ретельним, як, наприклад, Python, Neonвсе ще має набагато більше різноманіття, ніж деякі за замовчуванням, як Monokaiабо Solarized.

jQuery виділено з неоновою темою

Я мушу зазначити, що Better JavaScriptдля цього зображення я використав мовне визначення @ int3h замість того, яке постачається із Sublime. Його можна встановити за допомогою Package Control.

ОНОВЛЕННЯ

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

JavaScriptNext

Крім того, оскільки я спочатку написав цю відповідь, @skuroda випустив PackageResourceViewerчерез Package Control. Це дозволяє безперешкодно переглядати, редагувати та / або витягувати частини або цілі .sublime-packageпакети. Отже, якщо ви вирішите, ви можете безпосередньо редагувати кольорові схеми, включені до Sublime.

ІНШЕ ОНОВЛЕННЯ

З випуском майже всіх пакетів за замовчуванням на Github , зміни наступають швидко і люто. Старий синтаксис JS був повністю переписаний, щоб включити найкращі частини JavaScript Наступний синтаксис ES6, і тепер він максимально сумісний з ES6. Тонн інших змін були зроблені кришки кутових і крайових випадків, поліпшити консистенцію, і тільки в цілому зробити його краще. Новий синтаксис був включений у (наразі) останню версію 3111 розробки .

Якщо ви хочете використовувати будь-який з нових синтаксисів з поточною версією бета-версії 3103, просто клоніруйте десь репортаж Github і зв’яжіть JavaScript(або будь-якою мовою), яку ви хочете) у своєму Packagesкаталозі - знайдіть його у вашій системі, вибравши Preferences -> Browse Packages.... Тоді просто робіть git pullчас від часу в оригінальному каталозі репо, щоб оновити будь-які зміни, і ви зможете насолоджуватися останніми та найкращими! Слід зазначити, що репо використовує новий .sublime-syntaxформат замість старого .tmLanguage, тому вони не працюватимуть зі збірками ST3 до 3084 або зі ST2 (в обох випадках вам слід було б оновити до останньої версії бета або розробника).

Наразі я налаштовую свою неонову кольорову схему, щоб обробляти всі нові області в новому синтаксисі JS, але більшість з них уже слід висвітлювати.


Я встановив управління пакунками та ваш Кращий JavaScript. Як я можу встановити вашу схему? Він не вказаний у Кольоровій схемі.
Ніклас

Ви також встановили "Неонову тему" через управління пакунками? Після того, як у вас є, перейдіть Preferences -> Color Scheme -> Neon Themeі виберіть Neon.
MattDMo

1
Якщо ви встановлюєте пакети через Package Control, то в цьому випадку вони автоматично зберігаються в потрібному місці %APPDATA%\Sublime Text 3\Installed Packages\Neon Theme.sublime-package. Вибравши вище опцію меню, буде оновлено Packages\User\Preferences.sublime-settingsфайл також автоматично.
MattDMo

@MattDMo - ух, це було дуже ретельно. Я просто намагаюся зробити якийсь колір синтаксису та відредагувати підкріплення для розмітки, подібної XML. Але у вас виникли проблеми з з'ясуванням того, як почати щось надзвичайно просто. З чого я можу почати або інженер-реверсант, або, ще краще, отримати підручник по створенню з нього.
Тимофій Т.

1
@ nmz787, якщо все, що вам потрібно, це .sublime-syntaxфайл, просто завантажте його та скопіюйте у нього ~/.config/sublime-text-3/Packages/User. Потім воно буде доступне в меню синтаксису в правій нижній частині вікна Sublime, як самостійно (воно скаже «SystemVerilog»), так і під Userпідменю, залежно від налаштувань. Якщо потрібно весь пакет, переконайтесь, що Package Control було встановлено правильно, відкрийте палітру команд, введіть pci , натисніть клавішу Enter, шукайте SystemVerilogта натисніть клавішу Enter. Вам не слід було б перейменовувати жодні файли чи що-небудь - чому ви це робили?
MattDMo

31

Нарешті я знайшов спосіб налаштувати задані теми.

Перейдіть C:\Program Files\Sublime Text 3\Packagesі скопіюйте + перейменуйте Color Scheme - Default.sublime-packageв Color Scheme - Default.zip. Після цього розпакуйте та скопіюйте Тему, яку потрібно змінити %APPDATA%\Sublime Text 3\Packages\User. (У моєму випадку All Hallow's 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 червоним кольором. Ви можете вибрати свою Тему під Preferences -> Color Scheme -> User -> <Your Name>.


1
так, це невдала робота, до якої ми всі повинні звикнути, коли ми наближаємось до нового сміливого світу Sublime Text 3. Я впевнений, що ще довго будуть плагіни, які дозволять набагато простіше .sublime-packageредагувати ...
MattDMo

9
Цей плагін є тут - він називається PackageResourceViewerі може бути встановлений через Package Control. Це значно спрощує роботу з .sublime-packageфайлами Sublime Text 3 , і я дуже рекомендую це, якщо ви плануєте робити будь-які налаштування для ST3.
MattDMo

1
Де ви знайшли посилання на ці правила?
qodeninja

2
^ Що вони сказали. Також я не розумію, коли / де ви "вибираєте" ключове слово "це" у коді, чому це лише забарвлення ключового слова "це". Чи можете ви поясніть це?
Зельфір Кальтшталь


16

Скористайтеся плагіном PackageResourceViewer, встановленим за допомогою Package Control (як зазначено в MattDMo ). Це дозволяє перекрити стислий ресурс, просто відкривши його в піднесеному тексті та збереживши файл. Він автоматично зберігає лише відредаговані ресурси до% APPDATA% / Роумінг / Піднесений текст 3 / Пакети / або ~ / .config / sublime-text-3 / Packages /.

Що стосується оп, як тільки встановлено плагін, виконайте PackageResourceViewer: Open Resourceкоманду. Потім виберіть, JavaScriptа потім - JavaScript.tmLanguage. Це відкриє файл xml у редакторі. Ви можете редагувати будь-яке визначення мови та зберегти файл. Це запише перезапис копії файлу JavaScript.tmLanguage у каталог користувачів.

Цей же метод може бути використаний для редагування мовного визначення будь-якої мови в системі.


Я нічого не бачу там у кольорах. Однак ваша відповідь була найближчою до того, що мені було потрібно. Натомість я редагував Monokai.tmTheme відповідно до цього повідомлення на форумі SublimeText , щоб змусити підсвічування синтаксису JSON працювати.
jmort253

1
Конкретні вказівки у цій відповіді стосувалися редагування визначення мови. Хоча це не дозволить вам безпосередньо редагувати кольори кольорової гами, це дозволить вам змінити те, як знайдені певні типи областей, і, таким чином, як колірна схема інтерпретує (і кольори) мову. Плагін відкриє будь-який тип ресурсу в Sublime, щоб ви могли аналогічно редагувати кольорові схеми безпосередньо за допомогою того ж інструменту. Наприклад, я захоплююсь кольоровою схемою завтра вночі, тому я б відкрив завтра-ніч.tmTheme за допомогою цього плагіна для редагування цієї кольорової гами.
chawkinsuf

5

"Це" вже забарвлене в JavaScript.

Перегляд-> Синтаксис-> та виберіть мову, яку потрібно виділити.


Я просто шукав: View -> Syntax -> Open all with current extension as...встановити, наприклад, *.stanфайли із синтаксичним забарвленням C ++.
BoltzmannBrain

0

Це мій рецепт

Примітка. Це не зовсім те, що задають ОП. Ці інструкції допоможуть вам змінити кольори елементів (коментарі, ключові слова тощо), які визначені правилами відповідності синтаксису. Наприклад, скористайтеся цими інструкціями, щоб змінити так, щоб усі коментарі до коду були кольоровими, а не зеленими.

Я вважаю, що ОП запитує, як визначити thisяк елемент, який має бути кольоровим, коли його знайдуть у вихідному файлі JavaScript.

  1. Встановити пакет: PackageResourceViewer

  2. Ctrl+Shift+P> [ PackageResourceViewer: Open Resource]> [ Color Scheme - Default]> [ Marina.sublime-color-scheme] (або залежно від кольорової гами)

  3. Наведена вище команда відкриє нову вкладку до файлу " Marina.sublime-color-scheme".

    • Для мене цей файл знаходився в моєму роумінговому профілі %appdata%( C:\Users\walter\AppData\Roaming\Sublime Text 3\Packages\Color Scheme - Default\).
    • Однак, якщо я перейду до цього шляху в Провіднику Windows , [ Color Scheme - Default] не є дочірнім режимом [ Packages] dir. Я підозрюю, що PackageResourceViewerробить певну віртуалізацію.

необов'язковий крок: На новій вкладці кольорової гами: Ctrl+Shift+P> [ Set Syntax: JSON]

  1. Шукайте правило, яке потрібно змінити. Я хотів, щоб коментарі були видимими, тому я шукав " Comment"

    • Я знайшов це в "rules"розділі
 "rules":
    [
        {
            "name": "Comment",
            "scope": "comment, punctuation.definition.comment",
            "foreground": "var(blue6)"
        },
  1. Шукайте рядок, "blue6":щоб знайти розділ визначення колірної змінної. Я знайшов це в "variables"розділі.

  2. Виберіть новий колір за допомогою інструмента, наприклад http://hslpicker.com/ .

  3. Визначте нову змінну кольору або перезапишіть налаштування кольору blue6.

    • Попередження: перезапис blue6вплине на всі інші текстові елементи в тій кольоровій гамі, яка також використовує blue6 ("Знаки пунктуації", "Аксесуар").
  4. Збережіть файл, зміни будуть застосовані миттєво до будь-яких відкритих файлів / вкладок.

ПРИМІТКИ

Sublime буде обробляти будь-який із цих кольорів стилів. Можливо, більше.

hsla = відтінок, насиченість, легкість, альфа rgba = червоний, зелений, синій, альфа

hsla (151, 100%, 41%, 1) - останній парам - рівень альфа (прозорість) 1 = непрозорий, 0,5 = напівпрозорий, 0 = повністю прозорий

hsl (151, 100%, 41%) - немає альфа-каналу

rgba (0, 209, 108, 1) - rgb з альфа-каналом

rgb (0, 209, 108) - немає альфа-каналу

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