centos,bash環境でpecoを導入してコマンド履歴を便利にするまで。


最近TLでpercolやpecoが盛り上がっているので試してみました。

追記

lestrratさん、syohexさんからご指摘いただいた通り、そもそもpecoを使いたいだけの場合はGoのインストールは必要ありませんでした。
(percolだとpythonとかの設定が色々と面倒だった、という背景を忘れていました...)

詳細は下記記事を参考にしてみてください。

例えば、pecoをビルドしない
http://qiita.com/lestrrat/items/de8565fe32864f76ac19

pecoの導入

## 例
$ cd
$ mkdir -p local/src
$ cd local/src
$ wget https://github.com/peco/peco/releases/download/v0.1.12/peco_linux_amd64.tar.gz
$ tar -C /home/*****/local -xzf peco_linux_amd64.tar.gz

あとはパスを設定すればOKです。

追記前(残しておきます)

goのインストール

そもそもgoが入ってなかった...ので、ローカルにgoをインストールします。

## おもむろにディレクトリ作成
$ cd
$ mkdir -p local/src
$ cd local/src
$ wget http://golang.org/dl/go1.3.linux-amd64.tar.gz
$ tar -C /home/*****/local -xzf go1.3.linux-amd64.tar.gz

golangの環境設定

パスを設定します。適当に.bashrcとか開いてコピペ。

export GOROOT="$HOME/local/go"
export GOPATH="$HOME/local/mygo"
export PATH="$PATH:$GOPATH/bin:$GOROOT/bin"
## 設定再読み込み
source .bashrc

# 確認
which go

pecoのインストール

goがインストールできたので次はpecoをインストールします。

$ go get github.com/peco/peco/cmd/peco

# 確認
which peco

pecoの設定

こちらの記事を参考に、.bashrcとかに書き込んでいきます。

bashでもpercolをイイ感じに使う方法
http://d.hatena.ne.jp/hirose31/20140612/1402559889

最初なので、コマンド履歴を便利にします。
下記ソースを.bashrcに適当にコピペ。

# settings for peco
_replace_by_history() {
    local l=$(HISTTIMEFORMAT= history | 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'
# 再読み込み
$ source .bashrc

これであとはいつものようにC-rでインクリメンタルサーチすれば
あら不思議、pecoが使えます。

おまけ(vimっぽいキーバインド)

動的にフィルターをかけていって選択するときに、
vimっぽくjとかkでラインを移動できたら便利なので、そのようにキーバインドを変えます。

# おもむろにディレクトリを作る
$ cd
$ mkdir -p .config/peco/

# 移動してvimを開く
$ cd .config/peco
$ vim config.json

下記内容をコピペすればOK。

{
    "keymap": {
        "C-j": "peco.SelectDown",
        "C-k": "peco.SelectUp",
        "C-f": "peco.ScrollPageDown",
        "C-b": "peco.ScrollPageUp"
    }
}

参考サイト

流行りのpecoをcentosにインストールしました
http://blog.10rane.com/installed-the-peco-to-centos/
bashでもpercolをイイ感じに使う方法
http://d.hatena.ne.jp/hirose31/20140612/1402559889
例えば、pecoをビルドしない
http://qiita.com/lestrrat/items/de8565fe32864f76ac19