ミーハーなのでpecoを入れてみた

Goのことは1ミリもわからないけどミーハーなのでpecoを入れてみた。

Mac OSX, go1.3, pecoはv0.1.7

Goのインストール

※homebrewでpecoを入れる場合は不要
そもそもGoが入ってなかったので

$ brew install go

.zshrc

export GOPATH=$HOME
export PATH=$PATH:$GOPATH/bin

pecoのインストール

README通り

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

設定はほとんど弄ってない
~/.peco/config.json

{
  "Keymap": {
    "C-g": "peco.Cancel",
    "C-v": "peco.SelectNextPage"
  },
  "Style": {
    "Selected": ["underline", "on_blue", "black"],
    "Query": ["yellow", "bold"]
  }
}

ghq

ghq + peco/percol
を参考にしてghqを入れてpecoと連携。全く同じなので省略。

コマンド履歴

percolを使ってターミナル操作を早く、便利に。
を参考にして履歴をCtrl+Rで。これも同じなので省略。

よく訪れるディレクトリに移動

ディレクトの移動にz.shを使っていてるんだけれども、それも試しにpecoと連携させてみた。zはhomebrewで入れられる。
.zshrc

export _Z_CMD=z
. $(brew --prefix)/etc/profile.d/z.sh
function peco-frequently-visited-directory(){
    local selected_dir=$(z | tail -r | awk '{print $2}' | peco)
    if [ -n "$selected_dir" ]; then
        BUFFER="cd ${selected_dir}"
        zle accept-line
    fi
    zle clear-screen
}
zle -N peco-frequently-visited-directory
bindkey '^]^f' peco-frequently-visited-directory

としておけば、Ctrl + ], Ctrl + fでディレクトリがよく訪れる順に表示されつつインクリメンタルサーチできる。

tmuxinator

tmuxinatorを使うとtmuxを利用して設定ファイルに書いたプロジェクトごとのウィンドウ、ペイン構成を一発で立ち上げられる。
tmuxnatorもpecoを利用して簡単に使えるように.zshrc

function peco-tmuxinator() {
    local project_name=$(ls ~/.tmuxinator | sed -e s/.yml// -e /tmuxinator.zsh/d | peco)
    if [ -n "$project_name" ]; then
      mux $project_name
    fi
    zle clear-screen
}
zle -N peco-tmuxinator
bindkey '^]^t' peco-tmuxinator

multi_ssh

pecoでは複数選択もできるのでそれを使ってみる。
tmuxを使ってpecoで選択した複数サーバに一気ににsshする。

まずtmuxで複数サーバの同時オペレーションに載っているスクリプトをmulti_sshとか名前をつけて実行権限をつけてパスの通ったところに置いておく。

.zshrcに以下を追記

function peco-multi-ssh() {
    local hosts="$(grep -iE '^host[[:space:]]+[^*]' ~/.ssh/config | awk '{print $2}' | peco)"
    if [ -n "$hosts" ]; then
      multi_ssh ${=hosts}
    fi
    zle clear-screen
}
zle -N peco-multi-ssh
bindkey '^]^h' peco-multi-ssh

参考: pecoでsshするalias - Qiita

migemo

追記: ここは今はpecoのwikiにあるようにpeco/migemogrepを使ったほうがいいかも知れない。

$ go get github.com/mattn/peco-cmigemo
$ cp ~/bin/peco-cmigemo ~/.peco/peco-cmigemo
$ brew install cmigemo # もしインストールしてなければ
$ ln -s /usr/local/opt/cmigemo/share/migemo/utf-8 ~/.peco/dict # homebrewで入れたcmigemoの辞書へシンボリックリンク

そして~/.peco/config.json

{
  "CustomMatcher": {
    "C/Migemo":[
      "/Users/en30/.peco/peco-cmigemo", "$QUERY"
    ]
  }
}

peco-cmigemoの指定には~を使えないので注意。~の展開はシェルの機能で、pecoのmatchers.goを見ると上の値がそのままexec.Commandに渡されている。

感想

canythingは使っていたので基本は同じなんだけど、日本語入力、migemoを使えたりカスタマイズできたりしてイイ感じ