一風変わった補完候補の色付け方が /r/zsh にポストされているんですけれども、
http://www.reddit.com/r/zsh/comments/msps0/color_partial_tab_completions_in_zsh/c367xqo
(nicoulaj さんによる)
これを $LS_COLORS
を できるだけ 反映するようにしてみました。
結果はこんな感じです。(http://www.youtube.com/watch?v=DK6BTjFQKuU)
ソースコードはこちらから (https://github.com/hchbaw/list-colors.zsh)
インストール方法
% git clone https://github.com/hchbaw/list-colors.zsh.git
% cd list-colors.zsh
% $SHELL -uc ". ./list-colors.zsh && list-colors-zcompile ~/.dir_colors ~/.zsh/"
** Dumping and zcompiling for ~/.dir_colors
re-compiling ~/.zsh/list-colors-init.zwc: succeeded
** All done.
** Please update your .zshrc like this:
-- >8 --
fpath+=~/.zsh
autoload -Uz list-colors-init; list-colors-init
zstyle -e ':completion:*:default' list-colors list-colors list-colors-aux
# zstyle ':completion:*' group-name ''
# If you want to make it to respect directory-type color setting, you need
# to uncomment above line, please.
-- 8< --
出力の最後の -- >8 --
から -- 8< --
を .zshrc へ追加して下さい。
list-colors-zcomplieについて
上で出てくるコマンドです。 dircolors(5)
から zsh
の list-colors
用のパターンと、その時に動くコードをあらかじめ作るためのツールです。
使い方
list-colors-zcompile <dircolors(5)の設定ファイル> <出力するディレクトリ> <色設定ファイル>
対話環境で必要になる関数と変数をそれぞれの設定ファイルから <出力するディレクトリ> の下へ list-colors-init
というファイルに autoload
できる形で変換します。
dircolors
の設定値を <色設定ファイル> でマップしているんだけれどもとってもいい加減です。
(一応手元では動いた〜、というレべルです…ごめんなさい)
注意点です
上で「できるだけ」って書いたことなんだけれども、ファイルの拡張子でなくってファイルタイプで色が指定されているものに関しては上手くできていないです。特に、強引にディレクトリだけを特別扱いしようとしているんだけれども、不完全です。
(cd
する時と editor
等で、とあるディレクトリの下のファイルを開こうとする時、ディレクトリのはずなのに色が違う所です。自分ではディレクトリのはず!と思ったら途中でも '/' を入力しちゃうからか、ちょっとくらいおかしくても気にしなくなっちゃった…)
あと、補完関数の中で campset
されていたりするときも不完全です。
う〜む、どうにかしたいんだけれども方法が思いつかない…ごめんなさい。
とりあえず、 list-colors-aux
では半ば強引につじつまを合わせているので、必要であれば参考にしつつカスタマイズして下さい。それには、上の方で出てきた、
zstyle -e ':completion:*:default' list-colors list-colors list-colors-aux
の部分を、例えばそもそも my-list-colors
定義してそれを使うようにするには、
zstyle -e ':completion:*:default' list-colors my-list-colors
となります。 list-colors
関数を使いつつ、 my-list-colors-aux
を新たに作って
zstyle -e ':completion:*:default' list-colors list-colors my-list-colors-aux
とするのもありかもしれません。
やっぱり長くなった。おつかれ様でした。
どうもありがとう、Julien Nicoulaud!