Zsh
Linux
shell
unite.vim

zaw(zsh anything.el-like widget)による圧倒的な操作性の向上

More than 5 years have passed since last update.


zaw - zsh anything.el-like widget

zaw.gif

zawはEmacsにおけるanything.el, helm.el,

あるいはvimにおけるunite.vimに対応するpluginです。


  • 履歴の検索

  • ディレクトリの移動

  • gitの操作 (branchの切替, fileのステージ等)

  • processの管理 (PIDの取得, kill)

  • tmux (attach)

といったシェルでするべき事の大半がこのプラグインで非常に直感的に操作できます。

残念ながら、私には言葉でこのプラグインの素晴しさが伝えられないので

上のgifアニメをご覧ください。

anything.elやunite.vim等を使用した事のある方なら馴染みのある考え方だと思いますが、

zawでは sourceaction を結び付けます。

ディレクトリの移動においては source は最近訪れたディレクトリの一覧であり、

action はそのディレクトリに移動(cd)したり、パスを現在のコマンドラインに挿入する操作に相当します。

sourceaction をマッピングし、それらの選択をインクリメンタル検索する機能をzawが提供します。


install

導入は簡単です。zawをcloneして.zshrcからsourceするだけです。

git clone git://github.com/zsh-users/zaw.git

echo "source ${PWD}/zaw/zaw.zsh" >> ~/.zshrc

これでzshを再起動すれば使用できます。


  1. Ctrl-x; (^x;)でzawを起動する

  2. sourceの一覧がでるので^p, ^nで移動してEnterで決定

あとは表示されるactionを選んでEnterです。

^p, ^nで移動する際に文字を入力すると、インクリメンタル検索されます。


設定

よく使用するcdrやhistoryにはさらにショートカットが欲しい所。

私は以下のように設定しています:

autoload -Uz chpwd_recent_dirs cdr add-zsh-hook

add-zsh-hook chpwd chpwd_recent_dirs
zstyle ':chpwd:*' recent-dirs-max 500 # cdrの履歴を保存する個数
zstyle ':chpwd:*' recent-dirs-default yes
zstyle ':completion:*' recent-dirs-insert both

source $ZDOTDIR/zaw/zaw.zsh
zstyle ':filter-select:highlight' selected fg=black,bg=white,standout
zstyle ':filter-select' case-insensitive yes

bindkey '^@' zaw-cdr
bindkey '^R' zaw-history
bindkey '^X^F' zaw-git-files
bindkey '^X^B' zaw-git-branches
bindkey '^X^P' zaw-process
bindkey '^A' zaw-tmux

zaw-${source}のようなのが zle (zsh line editor) コマンドです。

これはbindkeyで特定のキーマッピングを指定できます。