37
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

zshのメニュー補完で候補をインタラクティブに絞り込む

Last updated at Posted at 2014-07-03

zshで補完をmenu-completeにすると補完候補が多い場合に候補選択が面倒ですが、設定次第で候補をインタラクティブに絞り込めるようになります。
※ 使用したのはzsh 5.0.2

メニュー補完絞り込み設定例

.zshrc
autoload -Uz compinit && compinit -u
zstyle ':completion:*' menu select interactive
setopt menu_complete

zshrcなどに上記の設定を追加すると、補完開始と同時に絞り込み機能が有効になり、以下のようにFunctions/Zle/というパスをF/Zl/というキー入力で絞り込むことが出来るようになります。

menuselect-interactive.png

setopt menu_completeを設定しない場合は補完開始直後に絞り込みが開始されず、再度補完開始のキーを叩いた時に絞り込みが開始になります。

メニュー補完のキーバインドを設定して使い易くする

絞り込み機能を有効にすると、設定次第ではメニュー補完での候補移動が出来なくなってしまう場合があります。
自分の場合は^f,^b,^n,^pで候補を移動してキー入力で絞り込みを行う事を両立させたかったので、以下のような設定にしてあります。

.zshrc
zmodload zsh/complist                                         # "bindkey -M menuselect"設定できるようにするためのモジュールロード
bindkey -v '^a' beginning-of-line                             # 行頭へ(menuselectでは補完候補の先頭へ)
bindkey -v '^b' backward-char                                 # 1文字左へ(menuselectでは補完候補1つ左へ)
bindkey -v '^e' end-of-line                                   # 行末へ(menuselectでは補完候補の最後尾へ)
bindkey -v '^f' forward-char                                  # 1文字右へ(menuselectでは補完候補1つ右へ)
bindkey -v '^h' backward-delete-char                          # 1文字削除(menuselectでは絞り込みの1文字削除)
bindkey -v '^i' expand-or-complete                            # 補完開始
bindkey -M menuselect '^g' .send-break                        # send-break2回分の効果
bindkey -M menuselect '^i' forward-char                       # 補完候補1つ右へ
bindkey -M menuselect '^j' .accept-line                       # accept-line2回分の効果
bindkey -M menuselect '^k' accept-and-infer-next-history      # 次の補完メニューを表示する
bindkey -M menuselect '^n' down-line-or-history               # 補完候補1つ下へ
bindkey -M menuselect '^p' up-line-or-history                 # 補完候補1つ上へ
bindkey -M menuselect '^r' history-incremental-search-forward # 補完候補内インクリメンタルサーチ

この中で一番重宝しているのはaccept-and-infer-next-historyです。
これを設定したキーを叩くと選択した補完候補がディレクトリの場合に候補を決定し、更にそのディレクトリ内で直ぐメニュー補完を開始してくれるのでキータイプをかなり減らすことが出来ます。

これで候補が多い場合でもメニュー補完を快適に使えるようになりました。

37
32
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?