Zsh
fish
shell
SENSYDay 11

いまさらfishを触ってみた

More than 1 year has passed since last update.

SENSY株式会社のnamcoです。

業務ではiOS APPの開発をしています。

Adventカレンダーということで、前から少し気になっていたfishを触ってみました。

全訳!fishシェル普及計画


fishはフル装備のコマンドラインシェル(bashやzsh同様)で、賢くユーザフレンドリーです。

fishは シンタックスハイライト 、 オートサジェスチョン 、知識ゼロ・設定ゼロでそのまま動作する TAB補完 をサポートしています。

もし、コマンドラインをもっと生産的に、便利に、楽しい(難解な文法や設定オプションを学ぶことなく)環境にしたいならば、fishはあなたの求めていたシェルかもしれません!


今まではzshを使っていました。zshの頑張って肥やしていく感じが好き(こういうとすごく肥やしてる感があるが、全然肥えていない)だったのですが、これを機会に、どちらを使っていくのがいいのか考えていければと思います。

今回の内容としては、下記のような流れで書ければと思います。

1. fishの構築。

2. 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

スクリーンショット 2017-12-10 14.39.59.png


プラグインマネージャを入れる。

$ curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs https://git.io/fisher


zshでの設定項目を再現。

なお、前述のように以下のような項目は、デフォルトで設定されているので、割愛。

とりあえずタブ押せばいろいろ出ます。

- シンタックスハイライト

- オートサジェスチョン

- TAB補完


プロンプトにgit情報を表示

これは、$fish_configで確認できるブラウザから変更できました。 

スクリーンショット 2017-12-10 14.53.45.png


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に乗り換えてみた


まとめ

まだ本当にさわりの部分だけなので、今後ドキュメントなどを読み進めて、理解を深めていきたいと思います。

下記参考にさせていただきました。ありがとうございます。

以上です。