fish shellの何がいいって、デフォが楽だし、ちょっと楽しいんですよ

手元のシェルを快適にするなら、bashを育てるより、fishで育てたほうがいい。

booth.pm fishshell.com fish.rubikitch.com

インストール

シェルまわり整備。

sudo apt install fish peco ripgrep golang micro xclip
sudo snap install starship
ghq get https://github.com/x-motemen/ghq
curl https://git.io/fisher --create-dirs \
    -sLo ~/.config/fish/functions/fisher.fish
fisher add decors/fish-ghq
fisher add oh-my-fish/plugin-peco
fisher add oh-my-fish/plugin-balias

実際aptやsnapのパッケージはansibleで管理しています。fishのconfもちゃんとgithubに上げよう

github.com

設定

ログインシェルはbashのままで、bashrcの末尾からfishを呼んでます。bash側でrbenvとかnvmとか整備させて、fish側は操作性に専念します。

tail -n1  ~/.bashrc
exec fish

たいして育ってない。派手に使い込んではいないので。

function fish_maintenance
    # fishのオートコンプリートの更新
    fish_update_completions
    # fisher自体のアプデ
    fisher self-update
    # fisherで入れたプラグインのアプデ
    fisher
end

function fish_user_key_bindings
    bind \cr peco_select_history
end

set GHQ_SELECTOR peco

# pip3
set PATH $HOME/.local/bin $PATH
# go get
set PATH $HOME/go/bin $PATH
# sasasin origin shell scripts
set PATH $HOME/scripts $PATH

# https://micro-editor.github.io/
# viと比べて micro は長いしダルい、miなら右手だけで打てる
balias mi "micro"
# https://microk8s.io/docs
balias mkctl "microk8s kubectl"

# https://starship.rs/
# starship が面倒なく使えたんで
starship init fish | source

操作

  • ctrl+g でghq get してきたリポジトリを探す
  • ctrl + r でhistory検索
  • めんどくさくなったら fish_maintenance で気分を紛らわせる
  • 補完が、あれこれ設定せずデフォの状態で、強力なのがいい。bash completionをせっせと集めたり、書いたりしなくとも、manpageから補完を生成してるらしい。IDEみたくtabキーでスパスパ出てくるの楽しすぎる

シェルスクリプト

~/.config/fish/functions にいろいろ置くかというと、ぜんぜん置いてなくて、むしろ bash で書いて ~/scripts に散らかしてます。シェルスクリプトにしようと思うのは、いくつかの環境で使いまわす気がする事柄なので、基本入ってないfishよりも、まあ、bashで書きますでしょう。

結論

いろいろ整備したローカルより、bashしか入ってないリモートやDockerコンテナ内で活動してることのほうが多いので、完全に自己満足ですね。だがそれが楽しい