文化的なfish環境を得る為の最短ルート


10数行のコピペだけで素早く最低限のfish環境を整えるためのメモです。
具体的には、fish+fisher+Theme+Z+fzfをインストールして使えるようにします。

Ubuntu20.04で確認していますが、Ubuntu18.04も同じと思います。

変更履歴

・2021/01/23 「Themeとプラグインを入れて整える」に「historyでpecoを起動」を追加
・2021/02/18 変数回りの誤り訂正等

背景

一時的に普段と違う環境で作業することになった場合など、初めのうちは時間効率など気にしてbashで頑張ろうとするのですが、数日後に結局我慢できずにそこそこ時間をかけてfish環境を整えてしまうので、自分用のメモとして残すことにしました。これで初日からfishでイキりコンソールを使えます。

fishシェルをインストール

公式 のまま

sudo apt-add-repository ppa:fish-shell/release-3
sudo apt-get update
sudo apt-get install fish

デフォルトシェルをfishへ

sudo usermod -s /usr/bin/fish <username>

これで一応使い始めることができます。
中間補完も使えます。

Themeとプラグインを入れて整える

# パッケージマネージャ(fisherとoh-my-fish)をインストール
curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher
curl -L https://get.oh-my.fish | fish

# テーマをインストール
# fisher install simnalamburt/shellder
# simnalamburt/shellderがインストールできなくなっていたため、oh-my-fish/bobthefishに変更(2022/2/5)
install oh-my-fish/bobthefish

# フォルダ移動を便利に(> z [TAB]で履歴へジャンプ)
fisher install jethrokuan/z

# コマンド履歴(historyでpecoを起動)
sudo apt install peco
fisher install oh-my-fish/plugin-peco
abbr -a history peco_select_history

# fzfで曖昧検索を超絶便利に
sudo apt install -y fzf
sudo apt install -y bat
sudo apt install -y fd-find
alias fd='fdfind' && funcsave fd
alias bat='batcat' && funcsave bat
# 執筆時に使っていたPatricF1/fzf.fishが使えなくなっていたためjethrokuan/fzfに変更(2022/2/5)
# fisher install PatrickF1/fzf.fish
fisher install jethrokuan/fzf

インストールは以上で完了です。
(ターミナルが文字化けする場合は、解説/補足:フォントを入れるを参照してください)

解説/補足

以下はインストール後に有益かもしれない補足情報です。

Pathの追加

set -U fish_user_paths <追加するpath> $fish_user_paths

環境変数の操作

環境変数を設定する

設定ファイルに書かなくても永続化されます。
永続化するにはファイルに書くか、用途が少し違いますがユニバーサル変数として設定する必要があります。

set -x <環境変数名> <値>

環境変数を削除する

set -e <環境変数名>

ユニバーサル変数を設定する

ユニバーサル変数は他のfishセッションからも参照可能で、永続化します。

set -U <変数名> <値>

エイリアスの設定と永続化

alias <新しい名前>='<元のコマンド>' && funcsave <新しい名前>

展開エイリアスの追加

コマンドに別名を付ける機能ですが、エイリアスと違いヒストリには元のコマンドで記録されます。複数人で運用するときなどに混乱しなくて良いです。

abbr -a <新しい名前> <元のコマンド>

themeを探す

本記事でインストールしているのは次のテーマです。
Gitのstatusが一目でわかって便利です。

simnalamburt/shellder

Fontを入れる

本記事のshellderを含む、Fishのテーマの多くが絵文字フォントを利用しています。文字化けする場合は利用しているOSに次のサイトにあるフォントなどをインストールして、ターミナルソフトのフォント設定を変更する必要があります。

私はUbuntu Monoを入れています。

Zの使い方

ターミナルで「z+[SPACE]+[TAB]」と打つと、フォルダの移動先候補が現れます。

複数のフォルダを行ったり来たりするのが楽になります。

z+[SPACE]+[TAB]

fzfの使い方

とりあいず、ホームディレクトリで「CTRL + f」を押してみましょう、フォルダやファイルをランチャー形式で選べる画面が表示されると思います。

続いて、普段はファイル名補完などで「TAB」キーを押すタイミングで「CTRL+f」を押してみましょう(例えば「vi [CTRL+f]」など)。補完候補がランチャー形式で表示されます。右ペインにファイルのプレビューが表示さるなど便利です。

また、CTRL+rでコマンド履歴が表示されます。
リストが表示されるだけのfish標準のhistoryコマンドと違い、上下キーや「CTRL+p」「CTRL+n」でカーソル移動して履歴を再実行できるので便利です。

最後に

これまでもドットファイル運用やAnsibleのルールブックなど色々ため込んできましたが、ケース対応が煩雑で結局インストール方法をネットで検索している自分がいます。この記事で卒業できると良いのですが。