SENSY株式会社のnamcoです。
業務ではiOS APPの開発をしています。
Adventカレンダーということで、前から少し気になっていたfishを触ってみました。
fishはフル装備のコマンドラインシェル(bashやzsh同様)で、賢くユーザフレンドリーです。
fishは シンタックスハイライト 、 オートサジェスチョン 、知識ゼロ・設定ゼロでそのまま動作する TAB補完 をサポートしています。
もし、コマンドラインをもっと生産的に、便利に、楽しい(難解な文法や設定オプションを学ぶことなく)環境にしたいならば、fishはあなたの求めていたシェルかもしれません!
今まではzshを使っていました。zshの頑張って肥やしていく感じが好き(こういうとすごく肥やしてる感があるが、全然肥えていない)だったのですが、これを機会に、どちらを使っていくのがいいのか考えていければと思います。
今回の内容としては、下記のような流れで書ければと思います。
- fishの構築。
- zshでの設定項目を再現。
fishの構築
fishのインストール
$ brew install fish
$ fish -v
fish, version 2.7.0
shellをfishに変更
$ chsh -s /usr/local/bin/fish
下記のようなログが出た方は、/etc/shellsに /usr/local/bin/fishも追加すると良い。
chsh: /usr/local/bin/fish: non-standard shell
あとはターミナルを再起動する。
下記を実行することで、ブラウザでのconfig確認ができる。
$ fish_config
プラグインマネージャを入れる。
$ curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs https://git.io/fisher
zshでの設定項目を再現。
なお、前述のように以下のような項目は、デフォルトで設定されているので、割愛。
とりあえずタブ押せばいろいろ出ます。
- シンタックスハイライト
- オートサジェスチョン
- TAB補完
プロンプトにgit情報を表示
これは、$fish_configで確認できるブラウザから変更できました。
historyのincrement search
追記します
https://github.com/fish-shell/fish-shell/issues/602
alias
下記のようにすればaliasを設定できます。
$ alias branch_old='git branch --sort=authordate'
なお、alias は function のラッパーでしかないので、
他のfishセッションで永続化できません。
永続化させたいなら、funcsaveする必要があります。
$ funcsave branch_old
またzshでは使えるグローバルエイリアスを使う方法は、見つけられませんでした。
下記のように自作で作られている方がいらっしゃったので、参考にさせていただきました。
zshからfishに乗り換えてみた
まとめ
まだ本当にさわりの部分だけなので、今後ドキュメントなどを読み進めて、理解を深めていきたいと思います。
下記参考にさせていただきました。ありがとうございます。
以上です。