fish を導入
(last update: 2017/02/21)
少し気になっていたモダンなシェル fish 、実家の兄も使っていていろいろ見せてもらったらやっぱり便利そうだったので導入してみた。
MacPorts でインストール。Homebrew 派の人は $ brew install fish
で。
$ sudo port install fish
$ fish_config # ブラウザで設定画面が開く
fish をデフォルトのシェルに設定する。まず fish がインストールされているパスを確認して、 /etc/shells
を編集する。その上で、 chsh
コマンドで切り替えれば OK。
$ which fish # -> /opt/local/bin/fish $ sudo emacs /etc/shells # 上記 fish のパスを追加 $ chsh -s /opt/local/bin/fish
プラグインのインストール
oh-my-fish のメンテナの方が作っているというプラグインマネージャ fisherman をインストール。
$ curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman
peco 関連のプラグインをインストール。 peco 自体は以前に go get でインストールしていた。
$ fisher omf/plugin-peco $ fisher yoshiori/fish-peco_select_ghq_repository
fish-peco_select_ghq_repository
は ghq で管理しているレポジトリを peco で検索して cd
する拡張。
C-r
でのヒストリ検索に peco を使うように、ghq のやつは C-o
にそれぞれ設定しておく。
function fish_user_key_bindings bind \cr peco_select_history bind \co peco_select_ghq_repository end
参考
- fishシェル普及計画
- 日本語 · fisherman/fisherman Wiki
- 詳解 fishでモダンなシェル環境の構築(fish,tmux,powerline,peco,z,ghq,dracula) - Qiita
- zsh から fish にした。 - yoshiori.github.io
fish-mode をインストール
Emacs で fish スクリプト(設定)を編集するための fish-mode をインストールする。
~/.emacs.d/Cask
に (depends-on "fish-mode")
を追加して以下のように実行すれば OK.
$ cd ~/.emacs.d/
$ cask install
設定ファイルは zsh や bash とはことなり .fishrc
ではなく ~/.config/fish/config.fish
となる。
PATH の設定
.zshrc とは構文が異なる。以下のような感じ。
# PATH set -x PATH /opt/local/bin /opt/local/sbin $PATH set -x PATH $HOME/bin $HOME/.cask/bin $HOME/py35/bin $PATH # Go set -x GOROOT (go env GOROOT) set -x GOPATH $HOME/go set -x PATH $GOPATH/bin $GOROOT/bin $PATH # nodebrew set -x PATH $HOME/.nodebrew/current/bin $PATH
alias の設定など
alias は zsh と同じ書式でもいけるという話もあったかもしれない。
# alias alias rm "rm -i" alias cp "cp -i" alias mv "mv -i" alias mkdir "mkdir -p" alias find "gfind" alias xargs "gxargs" # alias for git alias gst "git status" alias gdif "git diff" alias gdifc "git diff --cached" # alias for Mac alias ql "qlmanage -p $argv[1]" # user defined functions function cd builtin cd $argv ls -a end function fish_user_key_bindings bind \cr peco_select_history end
補完候補の拡充
以下のコマンドで man
などから補完候補を追加してくれるそうな。頼もしい話である。
$ fish_update_completions