zshで大文字小文字を無視して補完したい.
例えば次のような感じ.
~ % cd d[TAB]
Desktop/ Downloads/ deepdream/
Documents/ Dropbox/ dev/
そのためには次のように.zshrcに書けば良いです.
-
大文字小文字を無視して補完する
zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}'
-
わざわざ大文字を入力した時は小文字の候補を補完しない
zstyle ':completion:*' matcher-list 'm:{[:lower:]}={[:upper:]}'
-
でもやっぱり大文字の候補が見つからない場合には, 小文字の候補を補完する
zstyle ':completion:*' matcher-list 'm:{[:lower:]}={[:upper:]}' '+m:{[:upper:]}={[:lower:]}'
-
大文字小文字に関わらず, 候補が見つからない時のみ文字種を無視した補完をする.
zstyle ':completion:*' matcher-list '' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}'
-
通常補完 -> (小文字 -> 大文字) -> (小文字 -> 大文字 + 大文字 -> 小文字).
zstyle ':completion:*' matcher-list '' 'm:{[:lower:]}={[:upper:]}' '+m:{[:upper:]}={[:lower:]}'
複雑なパターンにも対応してくれますね!