macはzshよりfishのほうが軽量で高機能

2021年11月25日2022年08月21日

私の好きなアプリの一つInkdropの開発者であるTakuya Matsuyamaさんがfishについてyoutube配信をしていました。

https://youtu.be/KKxhf50FIPI

これを見て、「fishはなんて素晴らしいんだ!!」と思ってzshからfishに乗り換えた話。
youtubeを見ながらマネしたことを記述していきます。

インストール

必要なアプリをインストールしていきます。

fish

brew install fish
https://fishshell.com/

このfishに載せ替えていきます。

fisher

curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher

https://github.com/jorgebucaran/fisher

fishのプラグイン管理マネージャー。

shellder

fisher install simnalamburt/shellder

https://github.com/simnalamburt/shellder

ブランチ名を表示してくれます。

Nerd Fonts

brew tap homebrew/cask-fonts
brew install --cask font-hack-nerd-font

https://github.com/ryanoasis/nerd-fonts

shellderでリモート先と差分があるときに出力する矢印はNerd Fontsを使っています。

z

fisher install jethrokuan/z

https://github.com/jethrokuan/z

ディレクトリへの移動を履歴と頻度から予測してくれます。

exa

exa

brew install exa

https://the.exa.website/

ディレクトリ構造をいい感じに色付けして表示してくれます。

ghq

brew install ghq

https://github.com/x-motemen/ghq

git cloneしたリポジトリの管理をしてくれます。

peco

brew install peco

https://github.com/peco/peco

コマンド履歴やディレクトリの検索を簡単にしてくれます。

iterm2

https://iterm2.com/index.html

ターミナル起動を提供してくれます。

セットアップ

Takuya Matsuyamaさんがいい感じでセットアップした設定情報があるのでそれを使います。
https://github.com/craftzdog/dotfiles-public

設定ファイルのコピー

git cloneするのにさっそくghq getしてみましょう。

ghq get craftzdog/dotfiles-public

終わったらconfigフォルダをコピーします。

cp -rf ~/ghq/github.com/craftzdog/dotfiles-public/.config ~/.config

fishへ切り替え

fishのpathを確認して追記します。

$ which fish
/usr/local/bin/fish

$ vi /etc/shells
/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/fish # ←ここに追記

次のコマンドでついにzshともおさらばです。

chsh -s /usr/local/bin/fish

iterm2の設定

せっかくのshellderが文字化けしているのでフォント設定をします。
Preferences >> Profiles >> Text
iterm2
Nerd Fontに設定します。

これで準備完了です。

vscodeの設定

vscodeのterminalも文字化けしていたので設定を変更します。
Preferences >> Settings
検索バーにterminal fontを入力するとTerminal > Integrated: Font Familyという項目があるのでここでもHack Nerd Font Monoを指定します。
vscode

注意事項

いろいろと変更点があります。

設定ファイルのパス

zsh

~/.zshrc

fish

~/.config/fish/config.fish

パス設定

zsh
export PATH="パス:$PATH"

fish
set -gx PATH パス $PATH

使い方

簡単に使い方を説明していきます。

exa

llllaをすることでいい感じに色付してくれます。
隠しファイルまで見たいときはlla
ちなみにこんな感じで設定してあります。

$ cat .config/fish/config-osx.fish
if type -q exa
  alias ll "exa -l -g --icons"
  alias lla "ll -a"
end

ghq

セットアップのときにも使用したリポジトリ管理ツールです。
ghq get リポジトリでcloneしてくれます。
cloneしたのは~/ghq/配下にできます。

ちなみにghq get -p リポジトリでssh鍵にも対応しています。
ghq listでgetしたリポジトリを一覧で表示することができます。
これはあとのpecoで連携できるようになっているのでリポジトリ管理が楽になります。

peco

ctrl + rでコマンド履歴を検索することができます。
複雑なコマンドを覚えなくてもいいのが良いところです。

~/.config/fish/functions/peco_select_history.fish

ctrl + fでディレクトリを検索することができます。
表示内容は現在の作業ディレクトリ配下やghq getしたディレクトリなどです。
ディレクトリを簡単に移動することができます。

~/.config/fish/functions/pecochangedirectory.fish

z

zはディレクトリへのアクセス履歴とアクセス頻度から予測して、簡単なディレクトリ移動を提供してくれます。
例えばhomeからz dotとすると、さきほどghq get craftzdog/dotfiles-publicしたリポジトリのディレクトリへ移動します。
ディレクトリのキーワードがわかれば、予測して移動を手伝ってくれます。

まとめ

このようにzshからfishに乗り換えることで、また既存のを組み合わせることで素晴らしいユーザー体験を獲得することができたのではないでしょうか。
このようなのを配信してくださるTakuya Matsuyamaさんには感謝しかありません。
次はNeoVim編もあるのでそれもマネしていこうと思います。