Table of Contents
以前から percol の流行りに気になっていたが、python製のため導入が面倒さそうなので保留 しました。最近、percolを元にgolangで書かれたpecoが出てきて導入しやすくなったと感じて 手を入れました。
1 peco で何か便利なのか
- コマンド出力結果のインクリメントサーチが出来る
- Bashコマンド履歴のインクリメントサーチが出来る
- プロンプトでログファイルのインクリメントサーチが出来る
- パイプラインでたのコマンドとの連携で色々出来ると思います
具体なイメージはgithubの README が分かりやすい
2 導入手順
一番簡単なのは peco バイナリを PATH に通る。
$ wget https://github.com/peco/peco/releases/download/v0.3.3/peco_linux_amd64.tar.gz $ tar xzvf peco_linux_amd64.tar.gz $ tree peco_linux_amd64 peco_linux_amd64 ├── Changes ├── README.md └── peco 0 directories, 3 files $ export PATH=`pwd`/peco_linux_amd64:$PATH $ peco --version peco: v0.3.3
3 bash履歴の検索をpecoインタフェースにする
下記内容を ~/.bashrc に追加する
# 重複履歴を無視
export HISTCONTROL=ignoreboth:erasedups
# 履歴保存対象から外す
export HISTIGNORE="fg*:bg*:history*:wmctrl*:exit*:ls -al:cd ~"
# コマンド履歴にコマンドを使ったの時刻を記録する
export HISTTIMEFORMAT='%Y%m%d %T '
export HISTSIZE=10000
# settings for peco
_replace_by_history() {
local l=$(HISTTIMEFORMAT= history | cut -d" " -f4- | tac | sed -e 's/^\s*[0-9]* \+\s\+//' | peco --query "$READLINE_LINE")
READLINE_LINE="$l"
READLINE_POINT=${#l}
}
bind -x '"\C-r": _replace_by_history'
bind '"\C-xr": reverse-search-history'
これで、 Ctrl-r で起動されたBash履歴検索がpecoインタフェースに変わる。
元の検索インタフェースは Ctrl-x r で起動することも出来る。
4 pecoインタフェースのキーバンディングをカスタマイズする
$ mkdir ~/.config/peco
$ touch ~/.config/peco/config.json
$ cat <<_EOT_ > ~/.config/peco/config.json
{
"Keymap": {
"C-p": "peco.SelectPrevious",
"C-n": "peco.SelectNext",
"C-g": "peco.Cancel",
"C-v": "peco.SelectNextPage",
"C-@": "peco.ToggleSelectionAndSelectNext"
}
}
_EOT_