fish shell を使いたい人生だった
2019年4月15日: fisher version 3.2.8にアップデートしました。これに伴い、もともと記事内で記載していた fisher install
コマンドを
、fisher add
に変更しました
ずっとbashを使っていました。zsh、興味はありましたが、プラグインのための設定を書くのがなんとなく大変そうだという理由で、敬遠していました。そこに fish shell (以下 fish) が手を差し伸べてくれたのです。結論から書くと、bash と同程度の設定ファイルの記述量で、ディレクトリ間の移動やコマンド履歴の呼び出しといった利便性は飛躍的に向上しました。そして見た目が良い。入れて損はありません。
想定読者
Mac で bash を使っている方。
バージョン情報
ソフトウェア | バージョン |
---|---|
fish | 2.5.0 => 2.7.1 |
fisherman | 2.12.0 => 3.2.8 |
どこまでやるか
このたぐいの作業、はじめるとキリがありません。調べるうちにさらに便利なツールがどんどん出てくるからです。この記事では「見た目を良くした上で、コマンドラインツールにおけるディレクトリ間の移動やコマンド履歴呼び出しを便利にする」ところまでとします。
- tmuxは(なんだか大変そうななので)導入していません。今のところ、iTermのウィンドウ分割機能でまかなっています。欲しくなったときに入れようと思います。
- Git関連はghqとの連携してリポジトリへの移動をやりやすくするところまでとしています。ブランチの管理やコミットなどは、私の場合 Tig で行っているためです。
Before and After
fish shell
これがなければ始まりません。Homebrew で簡単にインストールできます。
$ brew install fish $ fish -v fish, version 2.7.1
次に、デフォルトシェルを変更します。
$ sudo vi /etc/shells # 末尾に /usr/local/bin/fish を追加 $ chsh -s /usr/local/bin/fish # デフォルトシェルを fish に変更
fisherman
fishのためのプラグインマネージャです。これのおかげで私達が記述する設定ファイルは最小限で済みます。
$ curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisher $ fisher -v fisher version 3.2.8 ~/.config/fish/functions/fisher.fish
bobthefish - テーマを変更する
黒背景にマッチするもので、落ち着いた色合いが好みだったのでこのテーマを選択しました。powerlineフォントを利用していますので別途フォントのインストールも必要です。
インストール
$ fisher add omf/theme-bobthefish $ git clone git@github.com:powerline/fonts.git $ ./install.sh
iTerm2でのフォント設定
インストールしたフォントをiTermのプロファイルで設定します。
これでiTermの画面がかっこよくなるはずです。テンションあがりますね!
z - 履歴からディレクトリへ移動
訪問履歴からディレクトリ移動候補を表示してくれます。また、z 文字列
のように入力すると履歴からマッチするものをさがして補完してくれます。日々使うディレクトリはだいたい決まっていますが、それでも完璧にパスを入力していくのは面倒なものです。あいまいな記憶から移動候補を見つける点で優れています。
fisher add z # インストール
fish-bd - 親ディレクトリへ移動
カレントディレクトリからの親ディレクトリを移動候補として表示してくれます。cd ../../
とはおさらばです。特にアプリケーション開発をしているところ、例えばソースコードを辿っていくと階層が深くなりがちで、そこからプロジェクトルートへ戻る…といったシーンで役に立ちます。
fisher add 0rax/fish-bd
peco + plugin-peco - コマンド実行履歴を選択
絞込機能付きのコマンド履歴選択が可能になります。インストール後、キーバインドの設定が必要です。
brew install peco fisher add oh-my-fish/plugin-peco
function fish_user_key_bindings bind \cr 'peco_select_history (commandline -b)' end
これで、Ctrl + R
コマンド履歴機能を呼び出すことができます。
ghq + peco - ghqで登録したGitHubリポジトリを選択して移動
ghqはGitのリポジトリ管理ツールです。ユーザディレクトリに git clone
して管理しても良いのですが、数が多くなってくると管理負荷が高くなります。ghqで楽しましょう。fishと組み合わせれば移動も楽です。なお履歴と同様キーバインドの設定が必要になります。
$ brew install ghq $ ghq get git@github.com:cm-wada-yusuke/angular-websocket-chat.git $ ghq get git@github.com:cm-wada-yusuke/chatserver-play-websocket-akka-stream.git
function fish_user_key_bindings bind \cr 'peco_select_history (commandline -b)' bind \c] peco_select_ghq_repository # 追加 end
Ctrl + ]
でcloneしたリポジトリの移動候補を選択できます。
balias
エイリアスを定義した上で、なおかつ登録したエイリアスも他のコマンドと同じように補完できるそうです。そうです、というのは、私が登録しているエイリアスは git
コマンドをg
にするくらいだからです。他にいろいろなコマンドをエイリアス登録するようになれば恩恵が大きくなりそうですね。
$ fisher add oh-my-fish/plugin-balias
balias g git # キーバインドの下あたりに追記
おまけ
fish_config
なんと設定画面がブラウザで開きます。新参者には非常にありがたい。私はカラー設定をここで変更しました。
さいごに
とても便利なツールを開発・提供してくださった開発者の皆様に感謝します。ご覧になっている方々の日々の業務を少しでもスタイリッシュにする助けになれば幸いです。