Zshメモ : zsh-syntax-highlightingでコマンドに色付け
zsh-syntax-highlightingを使うと図のようにコマンドラインにシンタックスハイライトが効くようになるので試してみる。

インストール : oh-my-zshの場合
インストール方法は下記ページに書いてある。
zsh-syntax-highlighting/INSTALL.md at master · zsh-users/zsh-syntax-highlighting · GitHub
各種プラグインマネージャー向けのインストール方法も書いてあり、oh-my-zshの場合は以下の手順でインストール。
1. oh-my-zshのpluginsディレクトリにgit cloneする。
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
2. ~/.zshrcのpluginsを編集してプラグインを有効化。
plugins=( [plugins...] zsh-syntax-highlighting)
3. ~/.zshrcを再読み込み。
$ source ~/.zshrc
使い方
シンタックスハイライトは下記6種類あり、デフォルトではmainのみが有効になっている。
- main - 基本ハイライト。デフォルトではこれのみ有効
- brackets - 括弧関連
- pattern - ユーザ定義パターン
- cursor - カーソルポジション
- root - ユーザがrootの場合にコマンドライン全体に適用
- line - コマンドライン全体に適用
main以外のハイライトを有効にしたい場合は~/.zshrcに以下のような行を追加。
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor)
main
基本となるハイライトで、コマンド、文字列、パスなどほぼ一通りハイライトされる。
具体的には、
zsh-syntax-highlighting/highlighters/main at master · zsh-users/zsh-syntax-highlighting · GitHub
に書いてあり、スタイルを変更したい場合は、
zsh-syntax-highlighting/main-highlighter.zsh at master · zsh-users/zsh-syntax-highlighting · GitHub
を参考にする。
例を挙げると、
# Declare the variable typeset -A ZSH_HIGHLIGHT_STYLES # エイリアスコマンドのハイライト ZSH_HIGHLIGHT_STYLES[alias]='fg=magenta,bold' # 存在するパスのハイライト ZSH_HIGHLIGHT_STYLES[path]='fg=cyan' # グロブ ZSH_HIGHLIGHT_STYLES[globbing]='none'
を~/.zshrcに追加すると図のようになる。
変更前:

変更後:

bracket
括弧に関するハイライトで、
- マッチしない括弧のハイライト
- 括弧の階層に応じてハイライト
- カーソルがある場所の括弧にマッチする括弧のハイライト
がある。
スタイルを変更する場合:
# マッチしない括弧 ZSH_HIGHLIGHT_STYLES[bracket-error]='fg=red,bold' # 括弧の階層 ZSH_HIGHLIGHT_STYLES[bracket-level-1]='fg=blue,bold' ZSH_HIGHLIGHT_STYLES[bracket-level-2]='fg=green,bold' ZSH_HIGHLIGHT_STYLES[bracket-level-3]='fg=magenta,bold' ZSH_HIGHLIGHT_STYLES[bracket-level-4]='fg=yellow,bold' ZSH_HIGHLIGHT_STYLES[bracket-level-5]='fg=cyan,bold' # カーソルがある場所の括弧にマッチする括弧 ZSH_HIGHLIGHT_STYLES[cursor-matchingbracket]='standout'

cursor
カーソルポジションのハイライト。
ZSH_HIGHLIGHT_STYLES[cursor]='bg=blue'
pattern
自分でパターンを定義してシンタックスハイライトできる。
例えばrm -rfで始まるコマンドに適用したい場合は下記行を追加。
ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
