Sublime Text и кириллица

Мне очень нравится текстовый редактор Sublime Text, но иногда я сталкиваюсь с необычными ошибками в скриптах, написанных в нем. На самом деле ошибки простые, но вот визуально их тяжело быстро обнаружить. Перейду от слов к делу.

На примере Shell-скрипта

## example.sh
echo "converting CoreStorage Volume ..."
echo "diskutil cs сonvert /Volumes/CORESTORAGE"
diskutil cs сonvert /Volumes/CORESTORAGE
echo "...done"

На первый взгляд ошибок нет. Но при выполнении в консоли появляется сообщение:

diskutil: did not recognize coreStorage verb "сonvert";
type "diskutil coreStorage" for a list

Из названия заметки можно догадаться, что ошибка в слове “convert”, где вместо “c” латинской написана “с” кириллическая.

В терминале можно проверить командой

echo "diskutil cs сonvert" |hexdump -c

Первый символ в слове convert отличается от остальных, ошибка найдена.

А в чем проблема Sublime Text?

А вот как это выгдядит в Sublime Text

За собственные ошибки мы платим. Предлагаю свести их к минимуму. Задача - обнаружить такие ошибки на этапе написания скрипта, чтобы во время отладки не отвлекаться на подобные, досадные опечатки.

Самый простой вариант - сохранять файл с кодировкой Ansi - Western (Windows 1252), но при сохранении Sublime ругается, что файл не может быть сохранен, т.к. содержит несовместимые символы. Но вот какие именно? Вариант отпадает.

Второй способ - найти/написать плагин с подсветкой таких ошибок. Я нашел первый попавшийся хайлайтер, доработал и забыл про проблему.

Highlighter (cyrillic edition)

Настройка плагина:

  1. Установим плагин Highlighter.
  2. Откроем настройки Sublime Text -> Preferences -> Package Settings -> Highlighter -> Settings - User
  3. Внесем изменения в шаблон поиска, изменим значение highlighter_regex
"highlighter_regex": "((?<=[a-zA-Z])[А-Яа-я])|([А-Яа-я](?=[a-zA-Z]))"

I’m lovin it

Mac