fzfをファイルで設定して使う
公開日:
はじめに
「fzfに設定ファイルってないの?」と思ったので調べた結果、ないことがわかりました。というわけで、運用面でカバーすることにしました。
fzfには設定ファイルがない
詳しくはman fzf
してもらいたいのですが、fzfには設定ファイルのような仕組みがありません。デフォルトの動作の設定には環境変数を使います。次のように。
export FZF_DEFAULT_COMMAND='fd'
export FZF_DEFAULT_OPTS='--cycle --layout=reverse'
FZF_DEFAULT_COMMAND
では、fzfが単体で呼ばれたときに候補の取得に使うコマンドを指定します。ここでは、Rustによるfind
コマンドの代替であるfdを指定しています。
FZF_DEFAULT_OPTS
では、fzfに入力するデフォルトのコマンドラインオプションを指定します。ここでは、候補選択においてサイクルするように指定し、また、レイアウトを変更しています。
FZF_DEFAULT_COMMAND
はこの方法でも構わないと思うのですが、FZF_DEFAULT_OPTS
は愚直にこの方法を用いてしまうと、シェルの設定ファイルの可読性が著しく低下してしまいます。よって次のような方法を考えました。
擬似的にfzfの設定をファイル化する
擬似的にとかのたまいましたが、そう難しいことはしません。
まず、シェルの設定ファイルには次のように書きます。
export FZF_DEFAULT_OPTS="$(cat "$XDG_CONFIG_HOME/fzf/fzf.conf")"
そして$XDG_CONFIG_HOME/fzf/fzf.conf
に、次のようにオプションを列挙します。
--cycle
--layout=reverse
以上です。
おわりに
シェルを立ち上げる度にファイルの中身を環境変数に突っ込んでしまえばいいではないかという無理矢理な方法ですが、うまく動いてくれているので気にしないことにします。