Fishを導入してみる。

こんにちは!k-junです。

今回は手元のmacの環境をzshからfishに移行したので、書き置きもかねて手順を書いてみようと思います。

Fishとは?

https://fishshell.com/docs/current/

Friendly Interactive Shellからfishと呼ばれているようです。zsh, bashしか比較対象がありませんが 確かにこれらのshellと比べても圧倒的に親切でした。fish_config打ったときなんかただただ感動しました。

他にも特徴として、syntax highlighting, autosuggestions, tab completionなどが挙げられており、 実際に使ってみると言葉以上の親切さを実感します。 他にもグローバル変数として変数が定義できたり、カラーリングがGUIで設定できたりと、ただただ親切でした。 たまに会いに行ったときの祖父母並みです。

Install

公式ページにOSごとの詳細が載っています。 macなので大人しく、brewでインストールします。

brew install fish

defaultのshellとして設定。

echo /usr/local/bin/fish | sudo tee -a /etc/shells
chsh -s /usr/local/bin/fish

Check

terminalを起動すると、defaultでfishが起動するようになりました。 hostnameが邪魔なので表示しないように設定します。 ついでに色もいい感じのものに変更。

fish_config

f:id:K-jun1221:20200218010533p:plain

Migrate

あとはPathの設定などをzshから引っ張ってきます。fishは初期読み込みとして~/.config/fish/config.fishを見に行くので ここに設定を書いていきます。

alias python='python3'
alias pip='pip3'
alias t='tmux'

set PATH /usr/local:$PATH

# Golang setting
set GOVERS 1.12.7
set GOROOT $HOME/.go_versions/$GOVERS/go/
set GOPATH $HOME/.go/
set PATH $GOROOT/bin:$PATH
set PATH $GOPATH/bin:$PATH
set GO111MODULE auto

# rbenv
set PATH "$HOME/.rbenv/bin:$PATH"
eval (rbenv init - | source)

set PATH "google-cloud-sdk/bin:$PATH"
set PATH $HOME/drivers/:$PATH
set PATH $HOME/flutter/bin:$PATH

# nodenv
set PATH "$HOME/.nodenv/bin:$PATH"
eval (nodenv init - | source)


# cargo
set PATH "$HOME/.cargo/bin:$PATH"

# aws terraform
set PATH "$HOME/aws/:$PATH"

# rust config env
set RUST_BACKTRACE 1

# google-cloud-sdk
set PATH $HOME/google-cloud-sdk/bin/:$PATH
set PATH /usr/local/bin:$PATH

# minikube
set PATH /minikube/:$PATH

# direnv
eval (direnv hook fish | source)

おしまい!zshと比べて補完機能がかなり優秀だったりと、今のところかなり満足して使ってます。 MacOS 10.15からzshがdefaultになりましたが、個人的には全然fishの方が優秀ですね... まあおそらくzshの真の力を知らないだけ...