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_