1. 最新版のfzf

fzfのインストール方法はいくつかありREADME.mdで紹介されています。

@github.com

junegunn/fzf

その中でUbuntuでのインストールの選択肢となるのは2つです。

インストールの選択肢

Linux package managers の aptを使用したインストールでは最新バージョンがインストールされません。

古いバージョンではAdvancedで紹介されているrfvが使用できないので困ります。

ですのでこの記事ではgitを使用したインストール方法を試していきます。

2. 今回実現したいこと

基本的にはREADME.mdの方法に従えば良いのですが個人的に実現したいことがあるので少しだけインストール方法をカスタマイズします。

個人的に実現したいこと
  1. git repositoryのclone先の変更

  2. xdg Base Directory

  3. 対話的なやり取りをしないsilentなインストール

2.1. git repositoryのclone先の変更

$HOMEは多くのdotfilesが保存されてしまいカオスな状況になりがちです。

できるだけ$HOMEをきれいにするためにclone先を変更します。

clone先は個人的な好みですが

$HOME/.local/bin/

にcloneします。

2.2. xdg Base Directory

この設定も$HOMEをきれいにすることの一貫です。

fzfの設定ファイルの場所を

$HOME/.config/fzf/

にします。

これはinstallスクリプト実行時にxdgオプションを指定することで可能です。

2.3. 対話的なやり取りをしないsilentなインストール

installスクリプト実行時にxdg、key-bindings、補完、bashrcに設定を追加するかどうかの対話的なやり取りが発生します。

Dockefileを作成するときのことを考えるとこの対話的なやり取りは邪魔になります。

オプションを指定することでこの対話的なやり取りを抑制 します。

3. インストールの実践

実際にインストールしてみます。

install in terminal
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.local/bin/.fzf
~/.local/bin/.fzf/install --xdg --key-bindings --completion --update-rc

clone先を~/.local/bin/.fzfに変更しています。

また、installスクリプトのオプションに4つのオプションを指定して対話的なやり取りを抑制しています。

4つのオプション
  1. --xdg

  2. --key-bindings

  3. --completion

  4. --update-rc

これでインストール完了です。

4. 結果の確認

それではインストール結果を確認していきます。

4.1. fzfコマンドの確認

whichコマンドでfzfの場所を確認します。

terminal input
which fzf
terminal output
$HOME/.local/bin/.fzf/bin/fzf

実行してバージョンを確認します。

terminal input
fzf --version
terminal output
0.30.0 (2093667)

最新バージョンのfzfを実行できることが確認できます。

4.2. .bashrcの変更内容

.bashrcに設定用のfzf.bashを読み込む処理が追加されています。
.bashrc 追加処理
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf.bash ] && source "${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf.bash

4.3. fzf.bashの確認

環境設定用の .config/fzf/fzf.bashが作成されています。

設定内容
  1. PATHの設定

  2. Auto-completion

  3. Key bindings

$HOME/.config/fzf/fzf.bash
# Setup fzf
# ---------
if [[ ! "$PATH" == */home/user/.local/bin/.fzf/bin* ]]; then
  export PATH="${PATH:+${PATH}:}/home/user/.local/bin/.fzf/bin"
fi

# Auto-completion
# ---------------
[[ $- == *i* ]] && source "/home/user/.local/bin/.fzf/shell/completion.bash" 2> /dev/null

# Key bindings
# ------------
source "/home/user/.local/bin/.fzf/shell/key-bindings.bash"

5. まとめ

fzfのインストール方法を少しだけ深掘りしました。

インストール方法を紹介してくれているサイトは多いのですがインストールする方法が複数存在するのでどの方法が自分のやりたいことにあっているのか判断が難しいところがありました。

この記事では私の個人的にやりたいことに適したインストール方法を紹介しました。

今回は以上です。