デフォルトのシェルをfishに変える

今まではずっと zsh + oh-my-zsh を使ってきたがナウい(死語)奴に変えたかったので変えてみた.

まず fish を入れてデフォルトのシェルに変えるところから.

$ brew install fish
$ sudo echo "/usr/local/bin/fish" >> /etc/shells
$ chsh -s /usr/local/bin/fish

fishでは export ではなく set -x環境変数を定義するようで, 早速 .zshrc をコピペしていくつか手直しして source で反映してみたが不具合が出た. 入力できるはずのコマンドが入力できない.

$ cp ~/.zshrc ~/.config/fish/config.fish
$ source ~/.config/fish/config.fish
$ exec $SHELL -l
$ touch
fish: Unknown command touch

なので, 一つずつ試してみて, 何が原因か調べた.

いくつか構文ミスがあって, エラーが出た.

詳しくはここ: https://gist.github.com/mimikun/83c4f385c38ae02ad192141ea7e4660c

主に、 set -x PATH=hoge などとしてるのが多かった. なんでこんな書き方するのかわからんけどそういうもんなんだろうな…

ハマりポイント1: Golang環境変数

$ vim ~/.config/fish/config.fish
# Golang
set -x GOPATH $HOME/go
set -x PATH $GOROOT/bin:$PATH
$ source ~/.config/fish/config.fish
$ exec $SHELL -l
/usr/local/Cellar/fish/3.0.2/share/fish/functions/__fish_pwd.fish (line 1): 
uname
^
in command substitution
    called on line 1 of file /usr/local/Cellar/fish/3.0.2/share/fish/functions/__fish_pwd.fish

多分ダメだったのは2行目の GOROOT のところ. なので, ここを見て設定し直した.

ハマりポイント2: anyenvの設定

普通に set -x PATH $HOME/.anyenv/bin:$PATH だけだと以下のように command not found と出るので少し工夫する.

$ anyenv update
Updating 'anyenv'...
Updating 'anyenv/anyenv-update'...
/Users/mimikun/.anyenv/plugins/anyenv-update/bin/anyenv-update: line 219: goenv: command not found

ここを見て設定した.

set -x PATH $HOME/.anyenv/bin:$PATH
anyenv init - fish | source

プロンプトを自分好みに変える

ここを見て作業した. ここも見た.

理想は以下のような感じ.

➜  mastodon git:(feature/add_pawoo_hashtag_editor) 

ブラウザから設定できるらしいので設定した.

$ fish_config

prompt の Robbyrussell を選択し, set prompt を押すだけで良い.

ghq関係の設定

ここ を見て設定する

$ brew install ghq peco fzf fzy
$ fisher add decors/fish-ghq

fisherを使うので予め入れておく

使い方はCtrl+Gと押すだけ, あいまい検索もできる.

以上