Ubuntuにpecoを導入してフィルタを素敵にする


pecoとは

色々なものをフィルタしてくれるツール。
詳細はGitHubのデモを見るのが一番はやい。
https://github.com/peco/peco

環境

OS:ubuntu 16.04 LTS
シェル:zsh 5.1.1

導入方法

# tarファイルをダウンロード
# 2017/12/09時点の最新はv0.5.2
sudo wget "https://github.com/peco/peco/releases/download/v0.5.2/peco_linux_386.tar.gz"

# 解凍
sudo tar xzvf peco_linux_386.tar.gz

# 移動
cd peco_linux_386

# 実行権限を付与
sudo chmod +x peco

# pecoを配置
sudo cp peco /usr/local/bin

# 実行できるかを確認
peco --version

設定

.zshrcにpeco用の設定を追記

.zshrc
# ----------------------------------
# peco
# ----------------------------------
function peco-select-history() {
  BUFFER=$(\history -n 1 | tac | peco)
  CURSOR=$#BUFFER
  zle clear-screen
}
zle -N peco-select-history
bindkey '^r' peco-select-history

あとは
source .zshrc
で再読み込み。

設定時の注意点

最初に試した時は
BUFFER=$(\history -n 1 | tac | peco)

BUFFER=$(\history -n 1 | tail -r | peco)
にしてたらうまく動かなかった。
tailの-rはMacにしかないらしい。
最初「無効なオプションです」って言われてman tailして初めて知りました。。。
※他の方が書いているpecoの設定をそのままコピペしてハマった・・・

使ってみる

  • Ctrl + r でコマンド履歴を見る。
    「ja」でフィルタすると「ja」を含む文字列を出力してくれる。

  • コマンド実行結果を入力に使う

    ps の結果をpecoに渡すことができる。

    そのまま任意のフィルタもできる。