最近、zsh + Vim + tmux でコマンドラインライフを過ごしている方も多くなってきたように思う。その豊かな CLI ライフを支えているのは数多くの優れたプラグインであることには間違いない(もちろんプラグインを使わない派閥も一定数いるでしょう)。
今回はとりわけ zsh に絞って有用であるプラグインを紹介していく。
zsh のプラグイン
プラグインマネージャ
まずは管理の要となるプラグインマネージャだろう。
今イチオシなのは zplug(neobundle + vim-plug の zsh 版)なのだが定番である Antigenも一応挙げておく。
- zplug - A next-generation plugin manager for zsh
- Antigen - A plugin manager for zsh, inspired by oh-my-zsh and vundle.
- zgen - A lightweight plugin manager for ZSH inspired by Antigen.
プラグイン
peco/fzf/percol/zaw などのラッパー関数を提供するフレームワーク的なもの。Vim でいう Unite.vim にあたるような存在。peco でインタラクティブに選択したいけど、シェルスクリプト書けないので設定面倒って人には良いかもしれない。Unite でいう source のように簡単に拡張できる機構がある。
zplug "mollifier/anyframe" antigen bundle mollifier/anyframe zgen load mollifier/anyframe
簡単に git ルートへ cd するやつ。
zplug "mollifier/cd-gitroot" antigen bundle mollifier/cd-gitroot zgen load mollifier/cd-gitroot
CLI で使える絵文字補完。実行デモを見るとわかりやすい。
jq に依存するが zplug を使うと一緒にインストールできる。
zplug "stedolan/jq", from:gh-r, as:command \| zplug "b4b4r07/emoji-cli", if:"which jq"# antigen/zgen では別途 jq をインストールする必要あり antigen bundle b4b4r07/emoji-cli zgen load b4b4r07/emoji-cli
移動系強化プラグイン(z や autojump など)の一つ。これもデモを見たほうが早い。
fzf/peco/percol なんかから利用できるようになっているのでインタラクティブ性が高く、あいまい検索(最小編集距離を計算)ができるので選択的インターフェースと親和性を高め合い相乗効果がある。
zplug "b4b4r07/enhancd", of:enhancd.sh antigen bundle b4b4r07/enhancd zsh zgen load b4b4r07/enhancd zsh
zsh で Vim の操作体系(surround.vim っぽいやつ)を使えるようにするやつ。最新の zsh では限りなく近い機能が標準搭載されたが、5.0.8 以前の zsh では有用である。
# zplug では zsh のバージョン指定ができる zplug "hchbaw/opp.zsh", do:"__zsh_version 5.0.8" antigen bundle hchbaw/opp.zsh zgen load hchbaw/opp.zsh
zsh のヒストリサーチを便利にするやつ。一時期 peco との組み合わせで話題になったが、ヒストリサーチに限ってはこっち使うほうが手っ取り早くて良い。ただ、過去の一覧を見たい、とかには不向き。両方使うのがいい。
zplug "zsh-users/zsh-history-substring-search", do:"__zsh_version 4.3" antigen bundle zsh-users/zsh-history-substring-search zgen load zsh-users/zsh-history-substring-search
zsh のコマンドラインに色付けをするやつ。
ls
とかに色がつくのでいい感じにカラフルな CLI を実現できる。実はこのプラグインは大変有用だが、公式の README にもある通り、compinit 以降に読み込まなければならない。この指定ができるのは現在 zplug のみである。# compinit 以降に読み込むようにロードの優先度を変更する(10~19にすれば良い) zplug "zsh-users/zsh-syntax-highlighting", nice:10 antigen bundle zsh-users/zsh-syntax-highlighting zgen load zsh-users/zsh-syntax-highlighting
補完ファイルである。zsh ではデフォルトで載っていないが日常的に使うコマンド(vagrant, docker, jq など)の補完ファイルを提供しているので欠かせないプラグインになる。
zplug "zsh-users/zsh-completions" antigen bundle zsh-users/zsh-completions zgen load zsh-users/zsh-completions
コマンド
ここからは番外編で、有用なコマンドを紹介していく。CLI のカスタマイズと一口に言っても、プラグインによるものであったり、コマンドであったり補完ファイル/テーマファイル、様々である。ここからは Antigen, zgen の管理範囲外であるが、zplug は対応している。
コマンドライン上の文字リテラルの絵文字を emoji 化するフィルタコマンド。
zplug "mrowa44/emojify", as:command
言わずと知れたインタラクティブフィルタのひとつ。Mac 系は brew でもインストールできる。
# fzf-bin にホスティングされているので注意# またファイル名が fzf-bin となっているので file:fzf としてリネームする zplug "junegunn/fzf-bin", as:command, from:gh-r, file:fzf # ついでに tmux 用の拡張も入れるといい zplug "junegunn/fzf", as:command, of:bin/fzf-tmux
fzf といえば peco、peco といえば fzf。fzf-tmux の peco 版もあるので一応紹介する。Twitter での観測範囲内ではあるが、fzf-tmux の peco 版を望む声はあるようだ。
# 必要ならばアーキテクチャ指定 zplug "peco/peco", as:command, from:gh-r, of:"*amd64*"# fzf-tmux の peco バージョン zplug "b4b4r07/dotfiles", as:command, of:bin/peco-tmux
拙作で申し訳ないが、個人的にとても有用だと思っているコマンド。ターミナル上でゴミ箱チックなことをする。fzf に依存する。依存しない Go 実装もあるが、fzf のちからをフルに使えるこっちのほうが有用。捨てたファイルの中身をシンタックスハイライト付きで確認したり、ゴミ箱の中から複数選択して戻したり、本当に削除したり、カレントディレクトリを動かずになんでも操作できるのが強すぎる。
# file:rm とすれば rm にリネームして使える(おすすめしないけど) zplug "b4b4r07/zsh-gomi", as:command, of:bin, file:rm
ちなみに、補完ファイルも有効になるはずなので、タブを押してみましょう。
まとめ
本記事では有用な zsh プラグイン(と、コマンドを少し)を紹介してきた。
Vim は エディタだからだろうが豊富にプラグインが存在し活発に開発されている。tmux も最近になってプラグインマネージャが確立し、プラグイン管理ができるようになってきている。しかし、zsh はどうだろうか。プラグインという概念が希薄な気がしてならない。zsh においてももっとプラグイン開発が盛んになって、より便利な CLI ライフを送れたらいいのになと思う。