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

2021年11月25日2021年11月28日

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



これを見て、「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

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

Nerd Fontに設定します。

これで準備完了です。

vscodeの設定

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


注意事項

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


設定ファイルのパス

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編もあるのでそれもマネしていこうと思います。