なんかpercol最近いきなり流行ってるなーと思ってたら、percolのgo版pecoがいつの間にか出てて流行ってた。ターミナル版anything的なpercolをzawの代わりに試してみた - $shibayu36->blog;みたいな感じで、昔からpercol使っててまあいいかと思ってたけど
- 設定ファイルが分かりやすい
- brewで簡単に入れることが出来る
- そこそこ開発されてる
というメリットもありそうなので乗り換えようとしてみている。
pecoのファイル運用
前と大体同じ感じでやる。基本的にこういうツールは自分でいろいろ作りたくなってきて、設定が増えてきて破滅するので、ファイルを置くディレクトリを決めておいてそこに置いておくことにする。
.zshrc
# setting for peco for f (~/.zsh/peco-sources/*) source "${f}" # load peco sources bindkey '^r' peco-select-history bindkey '^@' peco-cdr
pecoのキーバインド設定
よく使うコマンドくらいはemacsっぽくしたいので変更。~/.config/peco/config.jsonにひとまず以下のように書いた。
{ "Keymap": { "C-p": "peco.SelectPrevious", "C-n": "peco.SelectNext", "C-g": "peco.Cancel", "C-v": "peco.SelectNextPage" } }
(追記)
C-p, C-nの設定などは要らないようでした。M-vの設定もできるかも?僕はEmacs上ではCmd-vをM-vとして利用していて、これはterminal上では貼り付けになっちゃうので、SelectPreviousPageの設定はしてませんでした。
@shiba_yu36 その設定だと C-n, C-pは不要です. Ctrlプレフィックスはデフォルトでbashっぽい振る舞いになってます. あと Alt prefixが使えるようになったので, M-vに peco.SelectPreviousPageを割り当てたりできます.
— Shohei YOSHIDA (@syohex) 2014年6月27日
peco-select-history
ひとまずよく使うヒストリ検索から。zshのキーバインドで使えるように定義し、C-r -> 選択 -> 選択がBUFFERにという風に利用できるようになっている。まあpercolの例のほぼパクリ。
~/.zsh/peco-sources/select-history.zsh
function peco-select-history() { local tac if which tac > /dev/null; then tac="tac" else tac="tail -r" fi BUFFER=$(history -n 1 | \ eval $tac | \ peco --query "$LBUFFER") CURSOR=$#BUFFER zle clear-screen } zle -N peco-select-history
これだけで便利。これをキーバインドに登録しておく。
.zshrc
bindkey '^r' peco-select-history
peco-cdr
あとは最近訪れたディレクトリにpecoで行けるようにするやつ。cdr -l使うと便利にできる。
function peco-cdr () { local selected_dir=$(cdr -l | awk '{ print $2 }' | peco) if [ -n "$selected_dir" ]; then BUFFER="cd ${selected_dir}" zle accept-line fi zle clear-screen } zle -N peco-cdr
選択結果がなかったら移動せずにおいてくれる。
これもキーバインド登録。
.zshrc
bindkey '^@' peco-cdr
まとめ
peco簡単に入れることができるし便利。