fish shellを使ってシステム開発効率化

fish shellがいい感じらしいのですが、調べてみると

  • 補完が優秀
  • シンタックスハイライト
  • ブラウザで設定を変更できる
  • 軽い
  • エラーメッセージが具体的

といういいところがあるそうです。

具体的にどんな感じのシェルなのかというと、次のgifをご覧ください。

たしかに、いい感じ。
そして、かっこいい!

ってことでfish shell使います。

目次

fish shellをインストール

まずはfish shellをインストールします。
fish shellはbrewでインストールできます。

$ brew install fish
==> Downloading https://ghcr.io/v2/homebrew/core/ncurses/manifests/6.3
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/ncurses/blobs/sha256:a1aabfa5d0
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
######################################################################## 100.0%
...
==> Pouring ncurses--6.3.arm64_monterey.bottle.tar.gz
🍺  /opt/homebrew/Cellar/ncurses/6.3: 3,968 files, 9.6MB
==> Installing fish dependency: pcre2
==> Pouring pcre2--10.40.arm64_monterey.bottle.tar.gz
🍺  /opt/homebrew/Cellar/pcre2/10.40: 230 files, 6.1MB
==> Installing fish
==> Pouring fish--3.4.1.arm64_monterey.bottle.tar.gz
🍺  /opt/homebrew/Cellar/fish/3.4.1: 1,405 files, 14.8MB
==> Running `brew cleanup fish`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

シェルの一覧を修正します。

$ sudo vim /etc/shells

fish shellのパスを追加。

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
# fish shellを追加
/usr/local/bin/fish

fish shellを次のコマンドでデフォルトのshellにします。

$ chsh -s /usr/local/bin/fish
Changing shell for ri-ho-.
Password for ri-ho-: 
chsh: /usr/local/bin/fish: non-standard shell

または次のコマンドでfish shellのパスの追加とデフォルトのshellにすることができます。

$ echo $(which fish) | sudo tee -a /etc/shells
$ chsh -s $(which fish)

ターミナルを終了してから開くと次の画像の様にターミナルで「fish」が確認できます。

コマンドでデフォルトのシェルが変更できなかった場合はシステム環境設定から手動でデフォルトのシェルを変更します。

次の画像のようにシステム環境設定の「ユーザーとグループ」を開いてください。

「ユーザーとグループ」の画面の左下の鍵をクリックしてパスワードを入れ、編集できる状態にします。

その後、現在のユーザーを右クリックして「詳細オプション」を開きます。

「詳細オプション」のログインシェルでfishを選択します。

設定

fish shellの設定はブラウザでできます。
まず、次の様にターミナルでfish_configを実行します。

$ fish_config

ブラウザでfish shellの設定画面が開きます。

この画面上で各種設定を行っていきます。

パッケージマネージャーをインストール

fish shellのプラグインを管理するパッケージマネージャーはfisherを使います。
以下のコマンドでfisherをインストールします。

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

fisherの使い方を簡単に説明します。

インストールとアンインストール

パッケージをインストールするにはinstallを使います。

$ fisher install jethrokuan/z

アンインストールするにはremoveを使います。

$ fisher remove jethrokuan/z

インストール済みパッケージ一覧

listでインストール済みのパッケージを一覧表示させることができます。

$ fisher list
jethrokuan/z
oh-my-fish/plugin-peco
yoshiori/fish-peco_select_ghq_repository
sentriz/fish-pipenv

キーワードや正規表現で出力をフィルタリングするとこもできます。

$ fisher list peco
oh-my-fish/plugin-peco
yoshiori/fish-peco_select_ghq_repository

パッケージのアップデート

パッケージをアップデートするにはupdateを使います。

$ fisher update jethrokuan/z

テーマを変更する

見た目を変えるためにfish shellのテーマを変更します。
fish shellのテーマを変えるためにoh-my-fishを次のコマンドでインストールします。

$ curl https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install | fish

テーマを変更する

oh-my-fishを使ってテーマを変更します。
テーマは次のように複数あります。

今回は人気のbobthefishというテーマにします。

次のコマンドを実行してbobthefishをインストールします。

$ omf install bobthefish

bobthefishはアイコンフォントが使用されているので、一部が文字化けしてしまいますのでフォントを変更する必要があります。

フォントを変更する

bobthefishはアイコンフォントが使用されているので、ターミナルのフォントを変更します。

今回はpowerline fontsを使うので、以下のようにコマンドを実行してフォントをインストールします。

$ git clone https://github.com/powerline/fonts.git
$ cd fonts
$ ./install.sh
$ cd ..
$ rm -rf fonts

フォントをインストールしても文字化けが解消されない場合は手動でターミナルのフォントを変更します。

ます、次の画像のようにターミナルの環境設定を開きます。

次に、プロファイルのフォントで「powerline」の文字が入ったフォントを選びます。

以上でターミナルのフォントが変更でき、テーマの文字化けが解消されます。

ディレクトリ管理ツールをインストール

fish shellのディレクトリ管理ツールはzを使うので、次のコマンドでzをインストールします。

$ fisher install jethrokuan/z

zを使うとディレクトリ間の移動がすばやくできるようになります。

次のようにディレクトリに移動後にzにそのディレクトリに移動すると

# project_aに移動
$ cd xxx/yyy/project_a
# project_aディレクトリでzに登録
$ z project_a

次回からはzに登録したproject_aでproject_aディレクトリに移動することができます。

# ホームディレクトリ
$ cd ~/
# project_aディレクトリに移動
$ z project_a

zに登録したディレクトリ一覧を見たい場合は-lを使って見ることができます。

$ z -l
1       xxx/yyy/project_a

zに登録したディレクトリを削除した場合は、-cを使って存在しなくなったディレクトリを削除することができます。

$ rm -rf xxx/yyy/project_a
$ z -c
/Users/aaa/.local/share/z/data cleaned!

pipenvを使えるようにする

fish shellでpipenvを使えるようにするためにfish-pipenvをインストールします。

-> fisher install sentriz/fish-pipenv
set -U fish_user_paths ~/.pyenv/shims $fish_user_paths

まとめ

fish shellのプラグイン以外にもghqpecoを併用するとgitプロジェクトを楽に管理できます。

$ brew install ghq peco
$ fisher install oh-my-fish/plugin-peco yoshiori/fish-peco_select_ghq_repository

参考

https://zenn.dev/stag_buster/articles/14fe49409c8f7d

https://blog.ojisan.io/to-fish/

https://qiita.com/YuukiMiyoshi/items/4a52516744530cd60e47

https://qiita.com/hiroki924/items/5d88874264eee5704198

https://zenn.dev/obregonia1/articles/e82868e8f66793

ポンコツ.log
【shell】今年はfish、キミに決めた - ポンコツ.log 1月に1本でも上げようと思っていたらもう2月でした。 今年は更新頑張ろうと思いながら、すでに雲行きが怪しいです。 私事ですが転職をしまして、今年から新たなところでお...
万年素人からHackerへの道
pipenvがFishシェルで動かない - 万年素人からHackerへの道 pipenvコマンドを打つと Install http://docs.pipenv.org/en/latest/ to use this package. のエラー?が出る。 https://github.com/sentriz/fish-pipenv M1のMacBook Air...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

目次