私は以下を除いてグローバルに無効に.zshrc
しました。menu select
mpv/mplayer
zstyle ':completion:*' menu select=0
zstyle ':completion::complete:mpv:*' menu yes select
これは期待どおりに機能しますが、メニューが呼び出されたときにメディアファイルのみが表示されるようにルールを変更したいと思いますmpv
(例: "mp3|mp4|mpg|avi|...")。
*
テストするためにに変更してみましたが、うまく*.mp3
いきませんでした。
ルールを変更するにはどうすればよいですか?
ベストアンサー1
zstyle
完成設定は、完成の表示方法に影響し、完成の生成方法を調整できますが、完成を生成するコードを決定するわけではありません。コードは、またはそれに対応するものを使用して設定さcompdef
れますcompctl
。
メディアファイルのみを完成ファイルとして指定するには、次のようにmpv
呼び出します。compctl
.zshrc
compctl -/ -g '*.(#i)(mp3|mp4|mpg|avi)' mpv
この-/
オプションは、他の補完とともにディレクトリも完成することを意味します(そうしないと、サブディレクトリのファイルにアクセスできません)。この-g
オプションは、完了するファイルを選択するためのグローバルモードを指定します。(#i)
大文字と小文字を区別せずに一致します。
compdef
より複雑な完成の選択のために(この答えの範囲外)、関数を作成し、自動ロードマジックを使用するか、それを介してコマンドに関連付けます。関数が完成の生成方法を調整したい場合は、zstyleスタイルを照会できます。