Подсвечиваем zsh с zsh-syntax-highlighting
Есть такой замечательный shell - fish. И всем бы он замечательный, но уж жутко я привык к zsh и многим его фичам, которых нет в fish, и наоборот: в zsh не было одной очень понравившейся мне возможности - in-line подсветки синтаксиса. Точнее, я так думал что не было, или не было до недавнего времени. В общем не это важно. Теперь это она есть в виде дополнения к zsh, и называется zsh-syntax-highlighting.
Установка проста и нетривиальна. Даже не уверен, что можно назвать "установкой".
Скачиваем:
git clone git://github.com/zsh-users/zsh-syntax-highlighting.git
mv zsh-syntax-highlighting ~/.zsh/
Добавляем в конфиг zsh:
source ~/.zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
При следующем запуске терминала всё уже будет работать:
В репозитории есть 5 видов подсветок:
- main - "главная подсветка"
- brackets - подсветка парных скобок
- pattern - подсветка определённых пользователем паттернов
- cursor - подсветка курсора
- root - подсвечивает команды, если текущий пользователь - root
По-умолчанию включен только main. Для включения какого либо из остальных необходимо добавить в файл конфигурации zsh массив ZSH_HIGHLIGHT_HIGHLIGHTERS
, с нужными "подсветками":
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor root)
Brackets - как было написано чуть выше, подсвечивает парные скобки. Цвета по умолчанию меня устраивают чуть более чем полностью, но при желании их можно изменить:
ZSH_HIGHLIGHT_STYLES[bracket-error]='fg=red,bold' # Скобка с отсутствующей "парой"
ZSH_HIGHLIGHT_STYLES[bracket-level-1]='fg=blue,bold' # Цвета для уровней скобок с 1 по 4 -ый
ZSH_HIGHLIGHT_STYLES[bracket-level-2]='fg=green,bold'
ZSH_HIGHLIGHT_STYLES[bracket-level-3]='fg=yellow,bold'
ZSH_HIGHLIGHT_STYLES[bracket-level-4]='fg=magenta,bold'
ZSH_HIGHLIGHT_STYLES[cursor-matchingbracket]='fg=gray,bold' # Цвет парной скобки, если курсор на скобке
Pattern на мой взгляд наиболее интересная подсветка. Эту подсветку можно использовать, чтобы "подсветить" пользовательские команды. Например, чтобы дополнительно обратить внимание на "потенциально опасные команды". Для примера можно выделить фон для команды rm -rf
красным цветом:
ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
Ну и собственна цвет для курсора:
ZSH_HIGHLIGHT_STYLES[cursor]='bg=green'
И цвет для команд суперпольвателя root:
ZSH_HIGHLIGHT_STYLES[root]='bg=red'
Лично себе я оставил только три подсветки: main, brackets и pattern. Курсор у меня и так "подсвечивается", и для для root пользователя у меня цвета тоже меняются.
Можно так же создавать свои "подсветки", но я в это не углублялся так как нет такой нужды. Чуть более подробно это описано на соответствующей страничке проекта на github.