Terminal.appでlsのファイル色を変える

検索したらいっぱい出てくるのだが、Mac OS XのTerminal.appで

ls -G

を実行した時の色分けで、ディレクトリの色が青なのが黒背景だとすごく見づらいので、シアンに変更してみた。

  • 変更前↓

  • 変更後↓


やりかたは、Interpreting Color "ls" Output | Mac Geekeryを参考に、.zshrcに

export LSCOLORS=gxfxcxdxbxegedabagacad

を追加してから

source .zshrc

を実行。環境変数LS_COLORSを使うのがGNU ls流儀らしいのだけど、そうでなくてLSCOLORSなのはBSD系だからかな?

その後ろのgxfxcx〜というやつは、

# Type Foreground Background
1,2 Directory blue (default)
3,4 Symlink magenta (default)
5,6 Socket green (default)
7,8 Pipe brown (default)
9,10 Executable red (default)
11,12 Block blue cyan
13,14 Character blue brown
15,16 Exec. w/ SUID black red
17,18 Exec. w/ SGID black cyan
19,20 Dir, o+w, sticky black green
21,22 Dir, o+w, unsticky black brown

となっているらしい。上のサイトから転載ですが。

色コードは

man ls

に書いてあるとおり、

a black
b red
c green
d brown
e blue
f magenta
g cyan
h light grey
A bold black, usually shows up as dark grey
B bold red
C bold green
D bold brown, usually shows up as yellow
E bold blue
F bold magenta
G bold cyan
H bold light grey; looks like bright white
x default foreground or background

となっている。

つまりフォルダの色を青からシアンに変える場合は、デフォルトの値"exfxcxdxbxegedabagacad"の最初の"e"を"g"に変えるだけ。

ちなみにこういうGUIツールもあるらしいのだが、SIMBLとかいう別のアプリケーションのプラグインとして動くらしいので、面倒くさくてやめた。

zshの補完リストの色分け

それでlsは大丈夫なのだが、zshのauto-completeが色分けされていないことに気づいて、どこからコピペしてきたのか既にわからない設定ファイルを見ると、

zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}

となっていたので、

zstyle ':completion:*' list-colors $LSCOLORS

に変えてみた。すると、色分けされることはさせるのだが、何故か変な色がついてしまった。

  • cp と入力してタブを押したところ↓


  • 比較のためにlsしたところ↓

なんでだろ?

そして

いろいろ弄って今はこんな感じ。