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 名も補完してくれます。
-
TAG
- Android
- AWS
- Bitrise
- CodePipeline
- Firebase
- HTML
- iOS
- IoT
- JavaScript
- KPI
- Linux
- Mac
- Memcached
- MGRe
- MGReのゆるガチエンジニアブログ
- MySQL
- PHP
- PICK UP
- PR
- Python
- Ruby
- Ruby on Rails
- SEO
- Swift
- TIPS
- UI/UX
- VirtualBox
- Wantedly
- Windows
- アクセス解析
- イベントレポート
- エンジニアブログ
- ガジェット
- カスタマーサクセス
- サーバ技術
- サービス
- セキュリティ
- セミナー・展示会
- テクノロジー
- デザイン
- プレスリリース
- マーケティング施策
- マネジメント
- ラボ
- リーンスタートアップ
- 企画
- 会社紹介
- 会社紹介資料
- 勉強会
- 実績紹介
- 拡張性
- 採用
- 日常
- 書籍紹介
- 歓迎会
- 社内イベント
- 社員インタビュー
- 社長ブログ
- 視察
- 開発環境