fish-shellを使う

fish-shellを使う

週末は夜にランニングをしているのですが、ランニングのモチベーションを上げるために新しいウェアを最近購入しました!おかげでランニング熱は上がったのですが、財布の中は猛烈に吹雪いております。

こんにちは、エンジニアの「にいたか」です。

最近とても気に入って使っている fish を紹介したいと思います。

fish-shell って?

shell には bash や zsh など様々あります。fish-shell はその shell の中のひとつです。fish-shell はユーザーフレンドリーな補完が特徴です。git のブランチ名や ssh_config のホスト名など、様々な場面で補完してくれるので非常に助かります。

インストール

homebrew ユーザであれば次のコマンドでインストール完了です。

$ brew install fish

インストールが完了した後は chsh -s /usr/local/bin/fish でデフォルトの shell を切り替えます。最後にターミナルを再起動すると shell が fish になった状態で起動されます。

oh-my-fish

fish はそのままでもコマンド補完が便利でとても具合がいいのですが、素晴らしいプラグインがいくつも用意されています。それを使うための oh-my-fish を導入するとさらに幸せになれます。

github の oh-my-fish リポジトリの Install に書かれているように実行します。

$ curl -L github.com/oh-my-fish/oh-my-fish/raw/master/bin/install | fish

実行後は omf help などで oh-my-fish が使えるか確認します。

$ omf help

      $ omf [command] [arguments]

      Usage:
        omf install [<name>|<url>]
        omf theme [<name>]
        omf remove [<name>]
        omf update
        omf help [<command>]

      Commands:
        list      List local packages.
        describe  Get information about what packages do.
        install   Install one or more packages.
        theme     List / Use themes.
        remove    Remove a theme or package.
        update    Update Oh My Fish.
        cd        Change directory to plugin/theme directory.
        new       Create a new package from a template.
        submit    Submit a package to the registry.
        destroy   Uninstall Oh My Fish.
        doctor    Troubleshoot Oh My Fish.
        help      Shows help about a specific action.

      Options:
        --help     Display this help.
        --version  Display version.

      For more information visit → git.io/oh-my-fish

設定

設定ファイルは ~/.config/fish/config.fish です。初期状態から私が追加した設定は以下です。

~/.config/fish/config.fish
# Path
set -g -x PATH /usr/local/bin ~/bin $PATH
set -g -x PATH ~/Library/Android/sdk/platform-tools $PATH
set -U JAVA_HOME (/usr/libexec/java_home -v 1.7)

# Aliases
alias vi="vim"
alias rm="rm -i"
alias cp="cp -i"
alias mv="mv -i"

set につづくオプションの意味は fish のドキュメントに詳しい説明がありました。

オプション 説明
-l or –local forces the specified shell variable to be given a scope that is local to the current block, even if a variable with the given name exists and is non-local
-g or –global causes the specified shell variable to be given a global scope. Non-global variables disappear when the block they belong to ends
-U or –universal causes the specified shell variable to be given a universal scope. If this option is supplied, the variable will be shared between all the current users fish instances on the current computer, and will be preserved across restarts of the shell.
-x or –export causes the specified shell variable to be exported to child processes (making it an “environment variable”)
-u or –unexport causes the specified shell variable to NOT be exported to child processes

プラグインとテーマ

oh-my-fish は2015年5月の仕様変更によってプラグインとテーマを記載する箇所が変わりました。必要なプラグインやテーマは ~/.config/omf/bundle に記述します。記述後は omf install を実行してください。また、使用するテーマは ~/.config/omf/theme に記述することでターミナルの再起動後にテーマが反映されます。

~/.config/omf/bundle
package peco
theme bobthefish
~/.config/omf/theme
bobthefish

bobthefish というテーマは見た目がとてもカッコイイ Powerline を採用しています。Powerline で使うフォントは少しカスタマイズされたフォントです。ターミナルソフトで表示できるようにフォントの設定を行います。

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

install.sh 実行後にターミナルソフトで「*** for Powerline」というフォントを設定してください。私のおすすめは「Meslo LG S Regular for Powerline」です。

プラグインとして利用している peco はとても便利なツールで、一言でいうとフィルタです。以下設定を追加することで ctrl + r でとても便利なコマンド履歴が使えるようになります。事前に brew install peco する必要があります。

~/.config/fish/config.fish
# keybind
function fish_user_key_bindings
  bind \cr peco_select_history
end

設定後

こんな感じになると思います。下の画像を見ると vi ~/.conf と打ったあたりで補完されているのがわかると思います。これが素晴らしい。何も設定しなくても ~/.ssh/config の host 名も補完してくれます。
fish-shellを適用したあとのターミナル

TAG

  • このエントリーをはてなブックマークに追加
admin
管理者 admin admin