Fishの基礎 - 補完
提供: MochiuWiki : SUSE, EC, PCB
概要
Fishシェルの補完システムは非常に強力で柔軟性がある。
Fishの補完システムを理解するには、これらの概念を理解して、実際に補完スクリプトを記述することが重要である。
また、既存の補完スクリプト (~/.config/fish/completionsディレクトリ) を参考にする。
補完システムの詳細を知りたい場合は、Fishの公式サイトにあるWriting your own completionsを参照すること。
補完関数
completeコマンドを使用して、補完関数を定義する。
# 基本構文
complete -c <コマンド> <オプション> -a '<補完候補>' -d '<補完候補の説明>'
- -c <コマンド>
- 補完を定義するコマンドを指定する。
- -a '<補完候補>' または -a "<補完候補>"
- 補完候補を指定する。
- -d '<補完候補の説明>' または -d "<補完候補の説明>"
- 補完候補の説明を提供する。
オプションの補完
コマンドのオプションを補完する場合は、-s (短いオプション)、または、-l (長いオプション) を使用する。
complete -c cat -s n -l number -d "Enumerate lines"
条件付き補完
Fishでは、条件に基づいて異なる補完を定義することができる。
if command -q gcc
complete -c gcc -s O -a "0 1 2 3" -d "Optimization level"
end
動的補完
補完候補を動的に生成する場合は、コマンド置換を使用する。
complete -c ssh -a "(command cat ~/.ssh/config | string match -r '^Host\s+(\S+)' | string replace -r '^Host\s+' '')" -d "Known host"
補完スクリプト
複雑な補完ロジックは、別のファイルに記述して、sourceコマンドで読み込むことができる。
source ~/.config/fish/completions/mycommand.fish
補完の優先順位
-nオプションを使用して、特定の状況下でのみ補完を適用できる。
complete -c git -n "__fish_use_subcommand" -a clone -d "Clone a repository"
サブコマンドの補完
多くのコマンドはサブコマンドを持つ。
これらは、一般的に、__fish_use_subcommand関数を使用して処理する。
complete -c git -f -n "__fish_use_subcommand" -a "clone" -d "Clone a repository"
complete -c git -f -n "__fish_use_subcommand" -a "commit" -d "Record changes to the repository"
組み込み関数
Fishには補完を支援するための多くの組み込み関数がある。
__fish_complete_directories- ディレクトリの補完
__fish_complete_path- ファイルパスの補完
__fish_complete_groups- グループ名の補完
補完の削除
特定のコマンドの全ての補完を削除することができる。
complete -c <コマンド> -e
補完のテスト
特定のコマンドの補完をテストできる。
fish_complete_path <コマンド>