快適なターミナル環境のために
git の管理をしたり、サーバーに入ったり、ファイルを書き換えたり、何かとお世話になっているターミナル。
しかし、デフォルトで入っている bash というシェルでは、何かと不便なことが多いものです。
例えば、git のコマンドを補完してくれなかったり、($ git branch
と変換したいのですが、ここで Tab を押しても何も反応しません。。。)
![スクリーンショット.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F227196%2Fd6b10686-cbd1-1b67-f192-35b797f664f7.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b7d02cfcea87ec5bda897a2adc849f56)
ディレクトリ移動の時に Tab を押しすぎてごちゃごちゃしたり、(3回くらいならまだ良いほうかも)
![スクリーンショット2.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F227196%2Fc037244a-1a12-3907-946b-0b4a276f2944.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=223997a35500cfdfd79a933af2594938)
コマンドを間違えていても気がつかないし、(自分が悪いんだけれども。。。)
![スクリーンショット3.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F227196%2Fa2abd88d-d8e8-1fc6-d7e0-18d2c28b6e56.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=48400261834671c466bdfa65f04dd064)
地味に困ることが色々とあります。
そして、これらのイライラを解消してくれるのが、fish というシェルなのです。
fish でできること
fish は、Friendly Interactive SHell の略語で、とにかくユーザーフレンドリーに作られたシェルです。
他のシェルとは違って、特にカスタマイズすることなく使用することができます。
fishを使うと、今までの問題がこんな風に解決できます。
Git コマンドの補完
![スクリーンショット 2018-06-27 10.49.10.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F227196%2F7a42835e-ec8c-21d9-99e6-8f494d07cba5.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=4600607ebab44c6586699792e1964629)
$ git branch
を入力しようとしたら、履歴にそのコマンドがあれば灰色の文字で表示されるし、履歴にない場合でもTabを押せば補完候補からコマンドを選ぶことができます。
それに加えて、$ git branch -
でTabを押すと選択できるオプションも一覧で表示してくれます。これは結構便利です。
![スクリーンショット 2018-06-27 12.06.32.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F227196%2F279fdcf8-1d96-a081-2bc6-66eaa123faf3.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=24478498735da3cd3457eb90a68515e8)
他にも様々なコマンドにおけるオプションも表示できるので、いちいち調べる手間を省くことができそうです。
ディレクトリの移動がスムーズに
ディレクトリの移動のときに Tab を押すと、移動できる候補が表示されて、Tab をもう一度押すと候補を選択することができます。
![スクリーンショット 2018-06-27 12.10.48.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F227196%2Fb12d93c7-f355-d83c-1f30-e1e71ace3814.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=84e83813bd0857a9bbba5033eee86fcd)
もちろん選択には ←↓↑→ のキーを使うことも可能。
もう Tab の連打でターミナルに文字がごちゃごちゃすることはありません。
コマンドの打ち間違いが視覚的にわかる
bash では実行しなければわからなかったコマンドの打ち間違いも、fish なら事前にわかります。
![スクリーンショット 2018-06-27 12.15.40.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F227196%2F9b01ba18-5116-d530-2514-a8ef604a9917.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=ab162c17a4f3b8df546fb215d7ebc5eb)
存在しないコマンドであれば、文字が赤いままなのでミスに気がつきやすいです。
地味に生産性が高まります。
この他にも便利な機能があり、素直におすすめです、fish。
フレームワークとして、oh-my-fish や fisherman などを使うと、より見た目に変化をつけたりできますが、個人的にはシンプルなものが好きなので、fish をダウンロードするだけで良いかなと。
以下に、MacBook における簡単な fish の導入方法を載せておくので参考までに。
fishの導入方法(MacBook)
Homebrewでインストール
まずは、fish をインストールしていきます。
ターミナルから以下のコマンドを実行してください。
$ brew install fish
もしも Homebrew をインストールしていなくてエラーが出た場合は、公式ページを参考にしてインストールしてください。
デフォルトのシェルを fish に設定する
fish がインストールできたら、次にターミナルのデフォルト設定を fish に変更していきます。
ターミナルで以下のコマンドを実行して、シェルファイルに fish の情報を書き込みます。
ちなみに、シェルファイルへの書き込みは管理者権限が必要になります。
// Mac M1 チップの場合は /opt/homebrew/bin/fish
# echo -s /usr/local/bin/fish >> /etc/shells
次に、ターミナルを開いた時のデフォルトのシェルを fish に変更します。
// M1 チップの場合は /opt/homebrew/bin/fish
$ chsh -s /usr/local/bin/fish
これらのコマンドが無事に反映されたら、ターミナルを再起動してください。
上部バーに fish と表示されるようになっているのがわかると思います。
これでデフォルトで fish を使うことができるようになりました。
無事にあなたもfish民です。
おまけ:さらにshellをカスタマイズする
$ fish_config
を実行すると GUI から fish の設定を行うことができるので便利です。
![スクリーンショット 2020-08-06 14.28.49.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F227196%2F249583a4-8240-e6bf-8de4-c6e60ec84289.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=3e311c4be9e0042e87d63f1cbb13141b)
また、fish でエイリアスを設定することで、自分好みのコマンドを設定することもできます。
例えば、ターミナルから SublimeText で任意のディレクトリを開きたい場合、以下のように記載して
# ターミナルからSublimeTextで開く
alias sb='open -a /Applications/Sublime\ Text.app'
ターミナルに設定を読み込ませれば、aliasで設定したコマンドを使えるようになります。
# 設定の読み込み
$ source .config/fish/config.fish
# SublimeTextでディレクトリを開く
$ sb MyProjects/myapp
よく使うコマンドなどは、ショートカットとして登録しておくと便利になるのでおすすめです。
ちなみに、Android Studio で fish を使うためには、Android Studio の設定→Terminal→Shell Path に /usr/local/bin/fish
を指定する必要があります。