1. 最新版のfzf
fzfのインストール方法はいくつかありREADME.mdで紹介されています。
その中でUbuntuでのインストールの選択肢となるのは2つです。
Linux package managers の aptを使用したインストールでは最新バージョンがインストールされません。
古いバージョンではAdvancedで紹介されているrfvが使用できないので困ります。
ですのでこの記事ではgitを使用したインストール方法を試していきます。
2. 今回実現したいこと
基本的にはREADME.mdの方法に従えば良いのですが個人的に実現したいことがあるので少しだけインストール方法をカスタマイズします。
git repositoryのclone先の変更
xdg Base Directory
対話的なやり取りをしない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. インストールの実践
実際にインストールしてみます。
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つのオプションを指定して対話的なやり取りを抑制しています。
--xdg
--key-bindings
--completion
--update-rc
これでインストール完了です。
4. 結果の確認
それではインストール結果を確認していきます。
4.1. fzfコマンドの確認
whichコマンドでfzfの場所を確認します。
which fzf
$HOME/.local/bin/.fzf/bin/fzf
実行してバージョンを確認します。
fzf --version
0.30.0 (2093667)
最新バージョンのfzfを実行できることが確認できます。
4.2. .bashrcの変更内容
.bashrcに設定用のfzf.bashを読み込む処理が追加されています。
[ -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が作成されています。
PATHの設定
Auto-completion
Key bindings
# 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のインストール方法を少しだけ深掘りしました。
インストール方法を紹介してくれているサイトは多いのですがインストールする方法が複数存在するのでどの方法が自分のやりたいことにあっているのか判断が難しいところがありました。
この記事では私の個人的にやりたいことに適したインストール方法を紹介しました。
今回は以上です。