pecoっていうのは標準入力に受けた情報を複数のキーワードによって絞り込み検索できる便利な奴なんです。
こんな感じで。
※画像は[Mac] zsh+oh-my-zsh環境にpecoを導入&初期設定を行う | vdeepさんからお借りしました。
まず、PecoはGoLangのパッケージですので、Goをインストールします。
こちらを参考にさせてもらいました。
Ubuntu12.04にGoを入れてPecoが使えるようになるまで(bash編) – Qiita
wget, git がなければ入れておく
sudo apt-get -y install wget
sudo apt-get -y install git-core
ソースコードDL & インストール
wget https://go.googlecode.com/files/go1.2rc2.linux-amd64.tar.gz
sudo tar zxvf ~/go1.2rc2.linux-amd64.tar.gz -C /usr/local
.zshrcに追記
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
確認
source .zshrc
which go
Peco のインストール & 設定
インストール(数秒待つ)
go get github.com/peco/peco/cmd/peco
これで
which peco
と打ってみるとpecoの場所が表示されているようなら準備OKです。pecoが使えるようになりました。
ためしに
ls | peco
などやってみて動作を確認してみましょう。
pecoでコマンド履歴の検索をできるようにする
一応mac用とlinux用両方貼っておきます。
# OS 別の設定
case ${OSTYPE} in
darwin*)
#Mac用の設定
#履歴検索にPecoを使用
function peco-history-selection() {
BUFFER=`history -n 1 | tail -r | awk '!a[$0]++' | peco`
CURSOR=$#BUFFER
zle reset-prompt
}
zle -N peco-history-selection
bindkey '^R' peco-history-selection
########################################
;;
linux*)
#Linux用の設定
#履歴検索にPecoを使用
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
bindkey '^r' peco-select-history
########################################
;;
esac
Linux用のc-rでヒストリーをpecoに渡す方法はここじゃなくて別の所でみた気がするんだけど、同じコードだったので、こちらを参考にさせていただきました。
oh-my-zsh の環境で、peco-select-history が動かない – Qiita
MacOS用の履歴をpecoで見るコマンドは結構情報が多いのだが、linux用は少なかったので見つけるのに苦労した。
自分で書いてみたけど、上手く動かせなかった。まだまだシェルスクリプトは学ぶべきところが多いです。
で上の参考コードを見つけたという事です。
tacがなければtail -rを実行しているようだけれども、僕の環境ではtailに-rというオプションはそんざいしなかった。
なので実際には
function peco-select-history() {
BUFFER=$(\history -n 1 | tac | peco --query "$LBUFFER")
CURSOR=$#BUFFER
zle clear-screen
}
zle -N peco-select-history
bindkey '^r' peco-select-history
こう書きなおして使っている。シンプルで見通しやすくなった。
ということでlinuxでもpecoで履歴の参照ができるようになりました。
通常、bash,zshでは一文字でコマンド履歴を検索しなければなりませんが、pecoを使うと1つ以上の単語のアンドで履歴を絞り込めるのが大変便利。
絞り込んだ後に一覧から選べるので更に便利。
コマンド履歴は日頃しょっちゅう使うので導入に際しての費用対効果はかなり高い。
コマンド履歴に限らず、色んなシーンで使えて大変便利ですpeco。