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
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を使えたりカスタマイズできたりしてイイ感じ