fish + fzf で Task のあいまい補完
はじめに
Task はタスクランナーとしてとても便利ですが、タスクの数が増えてきて実行したいタスクをなかなか発見できずに困る体験が増えました
そこで fish の fzf によるあいまい補完をできるようにしたので紹介します!
※ 主にMacユーザー向けた設定手順です
fish をインストール
fish を使っていないなら fish をインストールする
homebrew install fish
fzf をインストール
公式ドキュメント の手順に従ってインストールする
MacOS の場合は homebrew でインストールすることができる
brew install fzf
jethrokuan/fzf のインストール
jethrokuan/fzf をインストールするために、fish のプラグインマネージャー fisher をインストールする
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
jethrokuan/fzf を fisher でインストールする
fisher install jethrokuan/fzf
TABキーによる補完を有効にするため、 FZF_COMPLETE を設定する
下記の設定がおすすめです. 設定の詳しい内容はドキュメントを参照してください
set -U FZF_COMPLETE 0
set -U FZF_COMPLETE 1
set -U FZF_COMPLETE 2
set -U FZF_COMPLETE 3
task の補完を有効にする
MacOS の場合は homebrew で task をインストールすると自動で fish に補完が設定される
brew install go-task
それ以外の場合は task のレポジトリから補完スクリプトをダウンロードして、$HOME/.config/fish/completions
の下に配置する
curl -o ~/.config/fish/completions/task.fish https://raw.githubusercontent.com/go-task/task/refs/heads/main/completion/fish/task.fish
jethrokuan/fzf と連携すると、補完スクリプト内の GO_TASK_PROGNAME
と言う変数の値が空になりエラーになるので、ユニバーサル変数(シェルを再起動しても保存されているグローバル変数)として設定する
set -U GO_TASK_PROGNAME task
キーバインドを追加
環境変数 FZF_DEFAULT_OPTS
を指定することで fzf にオプションを指定することができます
以下は CTRL-D
に選択の全解除、 CTRL-T
に選択の反転を追加します
set -U FZF_DEFAULT_OPTS "--bind 'ctrl-d:deselect-all,ctrl-t:toggle-all'"
まとめ
Task 以外でも fish + fzf の補完はとても便利なのでぜひ使ってみてください
Discussion