キーバインディングを使用した任意のzsh補完

キーバインディングを使用した任意のzsh補完

コマンドに補完機能がインストールされていない場合や、構文的にさまざまなタイプの引数を受け入れることができる場合、補完機能がほとんど役に立たなくなることがあります。たとえば、「git checkout」はgitで追跡されている任意のファイルの名前を取ることができます。または任意の参照または他のツリーのようなものの名前。オプション フラグもいくつか使用できます。これにより、さまざまな補完が可能になります。

たとえば、ブランチ名を補完したい場合、ブランチ名の補完やメニューの表示にキーをバインドする方法はありますか? (完了のどのカテゴリでも同様です。)

それは可能で便利だと思われますが、実際に行われているのを見たことはありません。

答え1

はい、可能です。私はもともと zsh メーリング リストの 1 つから次の情報を入手しましたが、誰が投稿したかは覚えていません。

zle -C complete-file complete-word _generic
zstyle ':completion:complete-file::::' completer _files
bindkey '^x^f' complete-file

これは、 ではなく別の補完関数を使用するように簡単に適応できます_files

complete-file最初の行は、組み込みcomplete-wordウィジェットのように動作し、_generic関数を使用して補完リストを生成する、という名前の新しい補完ウィジェットを定義します。

2 行目では、カスタム ウィジェットが使用されるときに、補完機能が_files補完リストを取得するためにのみ使用するように設定します。

次に、3 行目では新しいウィジェットをキー シーケンスにバインドします。

関連情報