Notepad++ и синтаксис MikroTik: настройка подсветки для скриптов RouterOS

Редактировать скрипт RouterOS в обычном блокноте без подсветки — значит почти гарантированно пропустить незакрытую скобку или опечатку в имени команды, а ошибку вы заметите только при импорте на роутер. Поиск по запросу «notepad mikrotik syntax» обычно приводит сюда именно поэтому: встроенный редактор Winbox и терминал не дают удобной работы с длинными скриптами, и администраторы переносят код в Notepad++, где подсветка синтаксиса MikroTik подключается через механизм пользовательских языков.

Штатного языка «MikroTik» в Notepad++ нет — его нужно добавить вручную через User Defined Language (UDL) или импортировать готовый XML-файл с описанием синтаксиса RouterOS. Ниже разберём оба способа, настройку автодополнения и типовые проблемы, с которыми сталкиваются при этом.

Почему стандартные языки Notepad++ не подходят

Синтаксис RouterOS не похож ни на один мейнстримовый язык программирования. Команды начинаются со слэша (/ip firewall filter add), параметры пишутся через знак равенства без пробела, а переменные объявляются через :local и :global. Если открыть скрипт как обычный текст или выбрать ближайший по виду язык вроде Bash, подсветка будет бессмысленной: Notepad++ раскрасит то, что не нужно, и проигнорирует ключевые конструкции.

Именно поэтому сообщество создаёт отдельные UDL-описания, где явно перечислены:

  • 🔹 ключевые слова — :local, :global, :set, :if, :foreach, :while, :do, :put;
  • 🔹 корневые ветки меню — /ip, /interface, /system, /tool, /routing;
  • 🔹 комментарии, начинающиеся с символа #;
  • 🔹 строки в кавычках и числовые значения;
  • 🔹 операторы сравнения и скобочные блоки.

Собственный UDL можно собрать и самостоятельно, но проще взять готовый файл и при необходимости доработать под свои задачи.

Установка готового UDL-файла с подсветкой RouterOS

Готовые XML-файлы с описанием синтаксиса MikroTik для Notepad++ публикуются энтузиастами на GitHub и в тематических форумах по запросам вроде «MikroTik RouterOS UDL Notepad++». Перед импортом имеет смысл открыть файл в текстовом виде и убедиться, что это действительно XML с описанием языка, а не что-то иное.

Порядок импорта в актуальных версиях Notepad++ выглядит так:

  • 📥 откройте меню Язык → Определить свой язык → Импорт (в английской версии — Language → User Defined Language → Define your language → Import);
  • 📥 укажите скачанный XML-файл с описанием RouterOS;
  • 📥 перезапустите Notepad++, чтобы язык появился в списке;
  • 📥 выберите новый язык в меню Язык внизу списка либо сохраняйте скрипты с расширением, привязанным к UDL (часто используют .rsc).

☑️ Проверка после установки UDL

Выполнено: 0 / 4

После импорта откройте любой экспортированный с роутера файл (/export file=config создаёт именно .rsc) и проверьте, как раскрашиваются ветки меню, строки и комментарии. Если часть конструкций осталась серой — их можно добавить вручную в редакторе UDL.

📊 Как вы редактируете скрипты MikroTik чаще всего?
Notepad++ с UDL-подсветкой
Встроенный редактор Winbox
VS Code с расширением
Прямо в терминале RouterOS

Ручная настройка User Defined Language

Если готовый файл не найден или хочется полного контроля, язык собирается вручную. Откройте Язык → Определить свой язык → Создать новый, задайте имя (например, MikroTik) и заполните вкладки.

На вкладке Keywords Lists в первую группу добавьте управляющие слова: :local :global :set :if :else :foreach :while :do :put :beep :delay :return :error. Во вторую — команды меню без начального слэша либо с ним, в зависимости от того, как вам удобнее читать код. На вкладке Comment & Number укажите символ # как начало однострочного комментария, а на вкладке Operators & Delimiters — скобки { } [ ] ( ) и операторы сравнения.

⚠️ Внимание: в RouterOS комментарий действует от символа # до конца строки, многострочных комментариев вида / / язык не поддерживает. Если добавить их в UDL по привычке, подсветка будет вводить в заблуждение — текст после «закрывающего» маркера на самом деле останется комментарием для роутера.

Цвета для каждой группы настраиваются кнопкой Styler рядом с соответствующим полем. Для тёмной темы Notepad++ проверяйте контрастность сразу на ней — цвет, читаемый на белом фоне, на тёмном может сливаться.

Какие конструкции RouterOS стоит добавить в UDL

Помимо базовых слов, полезно подсветить логические значения true/false и yes/no, префиксы переменных ($), escape-последовательности в строках (\n, \t, \"), а также часто используемые ветки меню: /ip address, /ip firewall, /ip route, /interface bridge, /system scheduler, /tool netwatch. Список зависит от того, какие скрипты вы пишете чаще всего.

Автодополнение и привязка расширения .rsc

Чтобы Notepad++ сам подхватывал подсветку, привяжите расширение файла к языку. В редакторе UDL есть поле Ext. — впишите туда rsc без точки. Теперь любой файл config.rsc, выгруженный с роутера, откроется сразу с подсветкой MikroTik.

Автодополнение настраивается отдельным XML-файлом в каталоге autoCompletion внутри папки установки Notepad++ (для пользовательских языков имя файла должно совпадать с именем UDL). Туда можно внести длинные команды вроде /ip firewall filter add chain=forward, чтобы не набирать их целиком. Структура файла описана в официальной документации Notepad++; если что-то не срабатывает, первым делом сверьте имя файла с именем языка — они должны совпадать посимвольно.

Типичные проблемы и их решения

Чаще всего после настройки встречаются четыре ситуации. Сводка по ним — в таблице ниже.

ПроблемаВероятная причинаЧто проверить
Подсветка не включаетсяЯзык не выбран или не привязано расширениеМеню «Язык», поле Ext. в UDL
Часть слов не подсвечиваетсяСлова записаны слитно без пробела-разделителя в спискеРазделитель в Keywords Lists — пробел
Файл с роутера «ломает» подсветкуКодировка или переносы строк отличаютсяКодировку (меню «Кодировки») и CRLF/LF
Автодополнение не работаетИмя XML-файла не совпадает с именем UDLПапку autoCompletion и регистр букв
После обновления Notepad++ язык пропалПользовательские языки хранятся в userDefineLangsРезервную копию папки конфигурации

Отдельно стоит упомянуть кодировку. Экспорт из RouterOS обычно приходит в UTF-8, и проблем с ним не бывает, но если скрипт собирался в разных редакторах, внутри могут встретиться символы в другой кодировке. Перед заливкой на роутер приведите файл к UTF-8 через меню Кодировки → Преобразовать в UTF-8.

⚠️ Внимание: подсветка в Notepad++ — это только визуальный помощник. Она не проверяет корректность команд для конкретной версии RouterOS: набор параметров и веток меню различается между версиями и пакетами (например, часть функций доступна только при установленных дополнительных пакетах). Перед применением скрипта на боевом роутере проверяйте его на тестовом устройстве или в CHR.

Альтернативы: VS Code и другие редакторы

Notepad++ — не единственный вариант. Для VS Code существуют расширения с подсветкой RouterOS, которые также добавляют сниппеты и базовую проверку скобок. Выбор между редакторами — дело привычки: Notepad++ легче и быстрее запускается, VS Code удобнее при работе с целыми репозиториями конфигураций и Git.

Какой бы редактор вы ни выбрали, главный выигрыш даёт не цвет текста, а дисциплина: храните скрипты в файлах с версионированием, а не внутри роутера — тогда откат после неудачного изменения займёт минуты.

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

Есть ли встроенная подсветка MikroTik в Notepad++ из коробки?

Нет, штатного языка RouterOS в Notepad++ нет. Подсветка добавляется через механизм User Defined Language — импортом готового XML-файла или ручным созданием языка в меню «Язык → Определить свой язык».

Какое расширение файла лучше использовать для скриптов RouterOS?

Общепринятое расширение — .rsc: именно его создаёт команда /export file=... на роутере. Привязав это расширение к UDL в поле Ext., вы получите автоматическую подсветку при открытии любых экспортов.

Почему после обновления Notepad++ пропал мой язык MikroTik?

Пользовательские языки хранятся в файлах конфигурации (каталог userDefineLangs в папке настроек программы). При некоторых способах обновления или переустановки эта папка может быть перезаписана. Держите резервную копию XML-файла вашего языка — повторный импорт займёт полминуты.

Проверяет ли Notepad++ ошибки в скрипте RouterOS?

Нет. UDL отвечает только за раскраску текста и не анализирует корректность команд. Фактическую проверку выполняет сам роутер при импорте или выполнении скрипта, поэтому тестируйте изменения на нерабочем устройстве.

Чем Notepad++ лучше встроенного редактора Winbox для скриптов?

В Notepad++ удобнее работать с длинными скриптами: поиск и замена по регулярным выражениям, одновременное редактирование нескольких файлов, сравнение версий через плагины и автодополнение. Встроенный редактор Winbox подходит для мелких правок, но не для разработки.