web-dev-qa-db-ja.com

zsh:メニュー補完のPageUp

私の.zshrcには

zstyle ':completion:*' menu select=20

私が打ったときこのように Tab 2回、完了メニューを受け取ります(少なくとも20から選択できると仮定します)。その後、を使用してナビゲートできます Up そして Down キー。私は期待します PgUp そして PgDown ページを上下にスクロールしますが、これはデフォルトの動作ではありません。

自然な考えは、bindkeyを使用してバインドすることです PgUp そして PgDown 適切なコマンドに。ただし、ドキュメントにはup-line-or-historydown-line-or-historyしかありませんが、それらのページの類似物は見つかりません。何が足りないのですか?

1
Boris Bukh

メニューを完了すると、 zsh/complistモジュールからのメニュー選択コード が呼び出されます。このモジュールでは、コマンドの選択が制限されていますが、これには「マークを1画面上/下に移動する」ことも含まれます。奇妙なことに、キーをforward-Word/backward-Wordまたはそのバリアントの1つにバインドする必要があります。おそらく、メニュー選択コードは標準ウィジェットを再利用し、ページアップ/ダウン用の標準ウィジェットがないためですが、メニュー選択はそうではありません。そのような言葉はありません。

terminfo モジュールを使用して キーシーケンスを検索 PgUp そして PgDn 端末が送信するものを送信するか、ハードコーディングします。

zmodload zsh/complist
zmodload zsh/terminfo
bindkey -M menuselect $terminfo[kpp] backward-Word
bindkey -M menuselect $terminfo[knp] forward-Word