もた日記

くだらないことを真面目にやる

Zshメモ : zsh-syntax-highlightingでコマンドに色付け

github.com

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

f:id:wonder-wall:20160625192334p:plain

インストール : oh-my-zshの場合


インストール方法は下記ページに書いてある。
zsh-syntax-highlighting/INSTALL.md at master · zsh-users/zsh-syntax-highlighting · GitHub

各種プラグインマネージャー向けのインストール方法も書いてあり、oh-my-zshの場合は以下の手順でインストール。

1. oh-my-zshpluginsディレクトリにgit cloneする。

$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

2. ~/.zshrcpluginsを編集してプラグインを有効化。

plugins=( [plugins...] zsh-syntax-highlighting)

3. ~/.zshrcを再読み込み。

$ source ~/.zshrc


使い方


シンタックスハイライトは下記6種類あり、デフォルトではmainのみが有効になっている。

  1. main - 基本ハイライト。デフォルトではこれのみ有効
  2. brackets - 括弧関連
  3. pattern - ユーザ定義パターン
  4. cursor - カーソルポジション
  5. root - ユーザがrootの場合にコマンドライン全体に適用
  6. 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に追加すると図のようになる。

変更前:
f:id:wonder-wall:20160625204653p:plain

変更後:
f:id:wonder-wall:20160625204701p:plain

bracket

括弧に関するハイライトで、

  1. マッチしない括弧のハイライト
  2. 括弧の階層に応じてハイライト
  3. カーソルがある場所の括弧にマッチする括弧のハイライト

がある。
スタイルを変更する場合:

# マッチしない括弧
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'

f:id:wonder-wall:20160625203318p:plain

cursor

カーソルポジションのハイライト。

ZSH_HIGHLIGHT_STYLES[cursor]='bg=blue'


pattern

自分でパターンを定義してシンタックスハイライトできる。
例えばrm -rfで始まるコマンドに適用したい場合は下記行を追加。

ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')

f:id:wonder-wall:20160625194540p:plain

root

ユーザがrootの場合にコマンドライン全体に適用される。
スタイルを変更する場合:

ZSH_HIGHLIGHT_STYLES[root]='bg=red'


line

コマンドライン全体に適用される。
スタイルを変更する場合:

ZSH_HIGHLIGHT_STYLES[line]='bold'