Подсветка синтаксиса в Obsidian: полное руководство

Подсветка синтаксиса в Obsidian включается автоматически для блоков кода, если после открывающих трёх обратных кавычек указать язык — например, ```python или ```javascript. Если язык не указан, Obsidian отображает содержимое блока моноширинным шрифтом, но никакой раскраски не применяет, и именно это чаще всего принимают за «сломанную подсветку».

Приложение использует библиотеку Prism.js для раскраски кода в режиме чтения и движок редактора CodeMirror 6 — в режиме редактирования. Из-за этого внешний вид одного и того же блока кода может немного отличаться в зависимости от режима, что является нормальным поведением, а не ошибкой. Ниже разберём, как правильно оформлять блоки кода, какие языки поддерживаются и что делать, если подсветка не работает.

Как включить подсветку синтаксиса в блоке кода

Базовый механизм прост: создайте блок кода с помощью трёх обратных кавычек и сразу после них без пробела укажите идентификатор языка. Выглядит это так:

```javascript

function hello() {

console.log("Hello, Obsidian!");

}

```

После закрытия блока тремя кавычками содержимое раскрасится в соответствии с правилами указанного языка. В режиме редактирования (Live Preview) подсветка появляется сразу, в режиме чтения — после рендеринга заметки.

Для встроенного кода внутри строки используются одинарные обратные кавычки — `код`. Учтите: встроенный код в Obsidian по умолчанию не раскрашивается по синтаксису, он лишь выделяется моноширинным шрифтом и фоном. Полноценная подсветка доступна только в блочной разметке.

Поддерживаемые языки и их идентификаторы

Obsidian опирается на Prism, поэтому список поддерживаемых языков широк: от популярных Python, JavaScript и C++ до разметки вроде Markdown, YAML и LaTeX. Точный актуальный перечень зависит от версии приложения, поэтому если редкий язык не подсвечивается, стоит проверить его наличие в документации Prism.

ЯзыкИдентификатор в блокеАльтернативные варианты
Pythonpythonpy
JavaScriptjavascriptjs
TypeScripttypescriptts
Bash / Shellbashsh, shell
YAMLyamlyml

Если язык не поддерживается, блок кода всё равно отобразится корректно — просто без раскраски. Это не ошибка, а ограничение встроенного набора грамматик. Для таких случаев существуют обходные пути через плагины, о которых речь пойдёт ниже.

📊 Как вы чаще всего используете блоки кода в Obsidian?
Хранение сниппетов кода
Учебные заметки по программированию
Конфиги и команды терминала
Не использую блоки кода

Подсветка в режиме редактирования и чтения

Важно понимать разницу между двумя движками. В Live Preview и исходном режиме работает CodeMirror 6 — он подсвечивает код прямо во время набора. В режиме чтения рендерингом занимается Prism. Наборы цветов и токенов у них различаются, поэтому один и тот же фрагмент кода может выглядеть чуть иначе.

Если подсветка есть в режиме чтения, но отсутствует в редакторе (или наоборот), проверьте следующее:

  • 🔍 Указан ли язык после открывающих кавычек — без него ни один из движков раскраску не применит.
  • 🎨 Не переопределяет ли текущая тема оформления стили кода — некоторые минималистичные темы намеренно приглушают цвета.
  • 🧩 Не конфликтует ли установленный плагин с рендерингом блоков кода — проверьте, отключив плагины по очереди.
  • 🔄 Обновлён ли Obsidian до актуальной версии через Настройки → Общие → Проверить обновления.
⚠️ Внимание: перед отключением плагинов для диагностики убедитесь, что заметки сохранены. Некоторые плагины меняют отображение содержимого, и их резкое отключение может временно изменить вид заметки.

Почему подсветка не работает: типичные причины

Наиболее частая причина — отсутствие или опечатка в идентификаторе языка. Например, ```pyhton вместо ```python не даст никакой раскраски, и Obsidian не сообщит об ошибке — блок просто останется серым. Проверяйте написание в первую очередь.

Вторая распространённая ситуация — использование тильд ~~~ вместо обратных кавычек или смешивание обоих вариантов в одном блоке. Открывающая и закрывающая оградительные последовательности должны совпадать по типу и длине, иначе блок не распознается корректно.

Третья группа причин связана с оформлением: пользовательская CSS-тема или сниппет может перекрывать цвета токенов. Быстрая проверка — временно переключиться на тему по умолчанию в Настройки → Внешний вид и посмотреть, появилась ли подсветка. Если да — проблема в теме, а не в Obsidian.

Как проверить конфликт CSS-сниппетов

Откройте Настройки → Внешний вид → CSS-сниппеты и отключите все активные сниппеты переключателями. Перезагрузите заметку. Если подсветка вернулась, включайте сниппеты по одному, чтобы найти виновника.

Настройка цветов через CSS-сниппеты

Стандартных переключателей для настройки цветов подсветки в интерфейсе Obsidian нет — изменения вносятся через CSS-сниппеты. Создайте файл с расширением .css в папке .obsidian/snippets вашего хранилища и включите его в настройках внешнего вида.

Пример переопределения цвета строковых литералов в режиме чтения:

.token.string {

color: #98c379;

}

Классы токенов (.token.keyword, .token.comment, .token.function и другие) соответствуют стандартной разметке Prism. Для режима редактирования используются классы CodeMirror с префиксами вида .cm-keyword, .cm-string. Точный набор классов можно посмотреть через инструменты разработчика, которые открываются сочетанием Ctrl+Shift+I в десктопной версии.

Плагины для расширенной подсветки

Если встроенных возможностей не хватает, загляните в каталог community-плагинов: Настройки → Плагины сообщества → Обзор. Там есть решения для нумерации строк в блоках кода, кнопок копирования, поддержки дополнительных языков и улучшенного отображения. Конкретный набор плагинов меняется со временем, поэтому ориентируйтесь на актуальные описания и количество загрузок в каталоге.

☑️ Настройка подсветки кода в Obsidian

Выполнено: 0 / 5
⚠️ Внимание: плагины сообщества имеют доступ к содержимому вашего хранилища. Устанавливайте только решения с понятным описанием и активной поддержкой, а перед установкой нового плагина делайте резервную копию хранилища.

Учтите, что на мобильных устройствах часть плагинов может работать с ограничениями или не работать вовсе — это зависит от конкретного плагина. Проверяйте описание на предмет поддержки мобильной версии.

Оформление заметок с кодом: практические рекомендации

Чтобы заметки со сниппетами оставались удобными в долгосрочной перспективе, придерживайтесь нескольких простых правил:

  • 📝 Всегда указывайте язык, даже если фрагмент короткий — это улучшает читаемость и помогает при экспорте.
  • 🏷️ Добавляйте заголовок или комментарий перед блоком кода, чтобы через полгода было понятно, что делает сниппет.
  • 📦 Длинные конфигурационные файлы храните в отдельных заметках и связывайте их с основной через вики-ссылки.
  • 🌓 Проверяйте читаемость подсветки в обеих темах — тёмной и светлой, если вы переключаетесь между ними.

Такой подход превращает Obsidian в полноценную базу знаний для разработчика: сниппеты легко находятся поиском, корректно отображаются и не теряют смысл со временем.

Часто задаваемые вопросы

Почему код не подсвечивается, хотя я указал язык?

Проверьте правильность написания идентификатора языка, отсутствие пробела между кавычками и названием, а также совпадение типа ограждающих символов (только обратные кавычки или только тильды). Если всё верно — переключитесь на тему по умолчанию, чтобы исключить влияние CSS.

Можно ли подсветить встроенный код внутри строки?

Штатно — нет. Встроенный код в одинарных обратных кавычках выделяется только моноширинным шрифтом и фоном. Полноценная синтаксическая раскраска доступна только в блочных элементах с тремя кавычками.

Как добавить поддержку редкого языка?

Если языка нет во встроенном наборе Prism, поищите плагин в каталоге сообщества. Альтернатива — указать близкий по синтаксису поддерживаемый язык: раскраска будет приблизительной, но часто достаточной для чтения.

Работает ли подсветка синтаксиса на мобильной версии Obsidian?

Да, базовая подсветка блоков кода работает и в мобильном приложении, поскольку используется тот же движок рендеринга. Ограничения могут касаться отдельных плагинов сообщества.

Почему код выглядит по-разному в редакторе и в режиме чтения?

Это нормально: в режиме редактирования раскраской занимается CodeMirror 6, а в режиме чтения — Prism. У них разные наборы токенов и стилей, поэтому оттенки и детализация подсветки могут отличаться.