Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
30
Help us understand the problem. What are the problem?

posted at

updated at

ログインシェルをfishにしてみる

なんかみんなやってるしログインシェルいろいろ設定したいなーと思ったけど、ちょっと面倒だなと思っていたところにfishなるものが。楽しい。
とりあえず必要そうなものを入れてみたメモ。


(2021/05)
M1 macbookに乗り換えたので改めて見直し。大きくは変わってないはず。

(2020/11/25)
fisherがバージョン4系になり、 fisher add ではなく fisher install になった(というか戻った?)ようなので更新。(編集リクエストありがとうございます)

(2019/02/12)
だいぶインストール時のコマンドが変わったようなので更新。

事前準備

  • brewのインストール

とりあえずこれだけあれば

fish設定

fish、fzf、ghq、fd、batインストール
※後述プラグインに必要なコマンドもインストールしてます

$ brew install fish fzf ghq fd bat
$ fish -v

/etc/shells末尾に /usr/local/bin/fish /opt/homebrew/bin/fish を追加。
2021/05追記
fishのインストール先が /opt/homebrew/bin/fish に変わったようです。
which fish で確認するのが良さそう。

sudo vi /etc/shells

デフォルトシェルを fish に変更

$ chsh -s `which fish`

ターミナルを再起動して、fishシェルに切り替わっているか確認する

Welcome to fish, the friendly interactive shell

fisher install

fish用プラグインマネージャ。
インストール方法は変わることがあるため公式を見たほうがいいです。

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

以下いろいろインストール。

z補間

fisher install jethrokuan/z

fzf補間

2021/05追記

今まで jethrokuan/fzf を使っていましたが、こちらのプラグインがさらに優秀すぎて感動したので乗り換えました。おすすめ。

fisher install PatrickF1/fzf.fish
# OR 履歴検索だけで良ければこちらでも問題ない
fisher install jethrokuan/fzf

とりあえずこれで、Ctrl + Rで履歴検索ができる。
Ctrl + F でファイル検索もできる。
(Ctrl + F は自分は右矢印キーの機能としてよく使用するため、後述の「binding設定」で変更している)
他にも便利キーありますが詳細はgithubで。

ghq補間

fisher install decors/fish-ghq

クローン先を統一する。Ctrl + Gで対象リポジトリを検索して移動できる。

ghq get 対象リポジトリ

デフォルトは~/ghq以下に保存される。リポジトリ保存先変更するには以下。

git config --global ghq.root 保存先ディレクトリ

(2021/05追記)
3年ほどfish使ってきて以下あまり使ってないなと思ったので小さく。

bashの記法に対応

GitHub - edc/bass: Make Bash utilities usable in Fish shell

fisher install edc/bass
bdコマンドで親ディレクトリへ移動
fisher install 0rax/fish-bd
alias補完
fisher install oh-my-fish/plugin-balias

binding設定

ctrl + fでファイル検索を行うkey bindingが設定されるが、これをctrl + sに変更したいのでやってみる。(自分はctrf+fを右移動としてよく使うため。)
~/.config/fish/conf.d/fzf.fishにkey binding用の設定ファイルが生成されているのでこちらを変更する。
※本当は公式記載の、独自ファイルを生成して〜でやった方がいいと思うが、一箇所変更したいだけなので横着する

~/.config/fish/conf.d/fzf.fishファイル内の\cf\csに変更する

\cctrlを意味するので\csctrl + sの意味になる。
\eescキーのこと。

aliasなど設定

編集

  • alias
    ~/.config/fish/config.fish
  • 関数定義
    ~/.config/fish/functions

書式注意

bashと書式違うので注意。こちら対応表のリンク
例えば

export PATH=/usr/local/bin:$PATH
↓
set -x PATH /usr/local/bin $PATH

独自のfunction定義したい

bashやfishの起動時設定ファイル整理

タブ補完

.config/fish/completions 以下にタブ補完用のスクリプトを置く。

公式リポジトリから持ってくる方法
https://github.com/fish-shell/fish-shell/tree/master/share/completions

gitの場合

curl https://raw.githubusercontent.com/fish-shell/fish-shell/master/share/completions/git.fish > ~/.config/fish/completions/git.fish

その他

fish_configコマンド

ブラウザが開いてコマンドラインのフォントや色をGUIで設定できる。楽しい。

fish_config

公式ドキュメントを開く

help doc

参考サイト

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
30
Help us understand the problem. What are the problem?