fishを使い始めよう

はじめに

みなさん、shellはなにつかってますか?
bashですか?zshですか?
色々あるので好みのshellを使ってると思います。
使いやすいshellや便利なものがあれば使いたい!
また、難しい設定とかしなくてもすぐ使えるものを探してる!
という方は、よければ fish を試してみてください。

fishとは

fishは ユーザフレンドリ であることを最重要視して設計されています。

空気を読み、簡単に機能を発見でき、すぐに覚えられるように巧妙な仕掛けが施されています。

また、すでにインストールされているコマンドを利用しようとします。

fishは設定なしでも必要に応じて便利機能にアクセスできますので、

コマンドライン初心者も たった3日でシェル中級者 になれます。

なぜなら、bash/zshユーザが設定をいじっている間に

fishユーザは徐々に機能を覚えていくようになるからです。

あなたも使ってみてください。

fishの何がいいのか

デフォルト の設定が貧弱→fishならば 無設定で便利機能満載

シェルスクリプト が苦手→fishスクリプトならば シンプル でわかりやすい

無駄に 多機能 で覚えきれない→fishは必要な機能を 厳選 している

マニュアルが わかりづらい →fishのマニュアルは 具体例満載 でわかりやすい

設定ファイル を書くのが面倒→fishならば Webブラウザ で設定できる!

補完設定 を書くのが面倒→fishならばmanページを解析して 自動で 補完設定をしてくれる

シングルクォート 中にシングルクォートを書けない→fishならば \’ と書ける

関数や環境変数を保存 するのに設定ファイルの書換えが面倒→fishならばその場で 永続化 できる

和訳 マニュアルがない→fishの 最新版公式文書を全訳済

  • 以下が 初期状態 で使えるようになっています。

Webブラウザのような Auto suggestion
– まるであなたの心を読んでるかのように正確
– Ctrl+EあるいはCtrl+Fで全確定!
– Alt+Fで単語単位で確定
– zshでは GitHub – zsh-users/zsh-autosuggestions が必要

リアルタイム 構文ハイライト
– 入力中に文法チェックしてくれるのでエラー防止になる
– 24bitカラー
– クオートの閉じ忘れを防げる
– zshでは GitHub – zsh-users/zsh-syntax-highlighting が必要

迷ったら TAB 押せ!
– 超強力な補完
– すべての補完(オプション、コマンド名ともに)に対して簡単な説明がある
– 3回押せばメニュー選択になる

親切な エラーメッセージ
– どこが間違っていたのか、どのように修正すべきかを教えてくれる
– 移行組のために、fish独自の文法へ慣れるような配慮がなされている

ユニバーサル変数 は 永続 する変数
– 複数のfishセッションに即座に反映される
– 一度設定すれば永続化され、コンピュータ再起動しても反映されたまま

軽い 立ち上がり
– シェル関数は徹底したautoloadで、最初に呼ばれたときに実体が読み込まれる
– ユーザは指定されたディレクトリにシェル関数のファイルを配置するだけ!

grepに 色がつく
– より便利になるよう同名のシェル関数が最初から定義されている

fishをMacに導入する

  • インストール
brew install fish
  • versionの確認
    • 2017/08/20の時点 fish, version 2.6.0
fish -v

fishをデフォルトのシェルにする

  • fishを利用できるように設定する
sudo vi /etc/shells
  • 上記ファイルに下記を追記
/usr/local/bin/fish
  • 以下コマンドでデフォルトで利用するシェルを fish に変更する
chsh -s /usr/local/bin/fish
  • exit で抜けたあと再度ターミナルに接続してみると fish に変わっているか確認します
    • 以下コマンドで確認してください
echo $SHELL
  • 以下のように表示されていたら成功です
/usr/local/bin/fish

プラグインマネージャーの導入

curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisher
  • 以下コマンドでバージョンを確認します
fisher -v
  • 2017/08/20時点では以下になっています
fisherman version 2.13.1 ~/.config/fish/functions/fisher.fish

fishermanを使ってテーマを入れる

  • themeは好きなものを入れる
    • 以下コマンドでインストール
fisher install omf/theme-bobthefish
  • powerlineを利用しているため必要なフォントをインストールする
git clone git@github.com:powerline/fonts.git
cd fonts
./install.sh
  • iTerm2の方は以下のように設定してください

その他、良さげなプラグイン

  • spin (時間がかかる処理のときクルクル回るアイコンを表示してくれるプラグイン)
    • インストールは以下コマンド
fisher install spin
  • z (一度 cd で移動したDirectoryを覚えて次から z タブキー で検索できるプラグイン)
    • インストールは以下コマンド
fisher install z
  • oh-my-fish/plugin-expand ( cd を使わずにDirectoryの移動ができるプラグイン)
    • インストールは以下コマンド
fisher install oh-my-fish/plugin-expand
  • 0rax/fish-bd (bd タブキー で親Directoryの候補を出してくれるプラグイン)
    • インストールは以下コマンド
fisher install 0rax/fish-bd
  • fisherman/gitignore (.gitignoreファイルをここのテンプレートから作成します。)
    • gitignore osx c++.gitignore を作成する
    • インストールは以下コマンド
fisher install gitignore

pecoと組み合わせてもっと便利に

  • pecoのインストール
brew install peco
  • plugin-peco (コマンド実行履歴を選択でき、絞込検索もできるプラグイン)
    • control + r で履歴検索が可能になります
    • インストールは以下コマンド
fisher oh-my-fish/plugin-peco
  • vim ~/.config/fish/config.fish で以下を追記
function fish_user_key_bindings
  bind \cr 'peco_select_history (commandline -b)'
end
  • 編集したコンフィグファイルをリロードします。
source ~/.config/fish/config.fish
  • control + rpeco が使えない場合は再起動してみて下さい

ghqと組み合わせてもっと便利に

  • ghqのインストール
brew install ghq
  • ghqのルートディレクトリはデフォルトでは ~/.ghq となっています
    • 使いやすいように個人の環境に合わせてパスを以下コマンドで指定します
    • 今回は workspace 配下に source ディレクトリを作成し指定させてます
git config --global ghq.root ~/workspace/sources
fisher install yoshiori/fish-peco_select_ghq_repository
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
  • vim ~/.config/fish/config.fish で以下を追記
function fish_user_key_bindings
  bind \cr 'peco_select_history (commandline -b)'
  bind \c] peco_select_ghq_repository  # 追加
end
  • 編集したコンフィグファイルをリロードします。
source ~/.config/fish/config.fish
  • control + ] でrepositoryの検索ができない場合は再起動してみてください

簡易な設定はブラウザで可能

  • 以下コマンドを叩くと設定画面が表示されるのでそこから設定することが可能
fish_config

最後に

偶然目に止まって触り始めてみたらfishのことが好きになってました
他にも便利そうなものを見つけたら更新していきます

参考元

Top

fish shell を使いたい人生だった