久々にターミナル触ったらほとんど忘れてたのでリハビリ
iTerm+zsh入れてたんだけどあんまり使いこなせてないし、 これを機に気になってたoh-my-zshっての入れてみることにした。
さらに調べてる途中で見つけたpercolってのも入れてみた。
環境
- 2017/02/28
- Mac OS X El Capitan 10.11.6
oh-my-zsh
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
インストールはこれだけ。
~/.zshrc のZSH_THEMEは wedisagree にした。
path が消えたので ~/.zshrc に下記を追加した。
export PATH=/bin:/usr/bin:/usr/local/bin:${PATH}
eval "$(rbenv init -)"
percol
sudo pip install percol してみたがエラー。
ぐぐったら easy_install pip すると直るよと書いてあったので試す。
入った

percolでコマンド履歴検索
percolを使ってターミナル操作を早く、便利に。 - すぎゃーんメモ
上記の通りなんだけど、~/.zshrc に下記を追加した
# ctrl+Rで履歴検索
# http://memo.sugyan.com/entry/20140611/1402487717
function percol_select_history() {
local tac
if which tac > /dev/null; then
tac="tac"
else
tac="tail -r"
fi
BUFFER=$(fc -l -n 1 | eval $tac | percol --query "$LBUFFER")
CURSOR=$#BUFFER # move cursor
zle -R -c # refresh
}
zle -N percol_select_history
bindkey '^R' percol_select_history
はてなの引用貼り付けしたらフォーマット死んだのでコピペしました。すいません。
ctrl+r 押すだけでコマンド履歴がpercolで表示される。

そのまま単語入れればAND検索で絞り込める。 さらにEnter押せばプロンプトに入力されるのでそのまま再実行できる。
なんて便利なんだ・・・
percolでcd履歴ジャンプ
percol で z / autojump のようにディレクトリ高速ジャンプ - Slip Ahead Logging
またまた上記の通りなんだけど、~/.zshrc に下記を追加した
# percolで履歴ジャンプ
# http://stillpedant.hatenablog.com/entry/percol-cd-history
# {{{
# cd 履歴を記録
typeset -U chpwd_functions
CD_HISTORY_FILE=${HOME}/.cd_history_file # cd 履歴の記録先ファイル
function chpwd_record_history() {
echo $PWD >> ${CD_HISTORY_FILE}
}
chpwd_functions=($chpwd_functions chpwd_record_history)
# percol を使って cd 履歴の中からディレクトリを選択
# 過去の訪問回数が多いほど選択候補の上に来る
function percol_get_destination_from_history() {
sort ${CD_HISTORY_FILE} | uniq -c | sort -r | \
sed -e 's/^[ ]*[0-9]*[ ]*//' | \
sed -e s"/^${HOME//\//\\/}/~/" | \
percol | xargs echo
}
# percol を使って cd 履歴の中からディレクトリを選択し cd するウィジェット
function percol_cd_history() {
local destination=$(percol_get_destination_from_history)
[ -n $destination ] && cd ${destination/#\~/${HOME}}
zle reset-prompt
}
zle -N percol_cd_history
# percol を使って cd 履歴の中からディレクトリを選択し,現在のカーソル位置に挿入するウィジェット
function percol_insert_history() {
local destination=$(percol_get_destination_from_history)
if [ $? -eq 0 ]; then
local new_left="${LBUFFER} ${destination} "
BUFFER=${new_left}${RBUFFER}
CURSOR=${#new_left}
fi
zle reset-prompt
}
zle -N percol_insert_history
# }}}
# C-x ; でディレクトリに cd
# C-x i でディレクトリを挿入
bindkey '^x;' percol_cd_history
bindkey '^xi' percol_insert_history
こちらもはてなの引用貼り付けしたらフォーマット死んだのでコピペしました。すいません。
引用元の最後の2行はエラーしたので消した。
ctrl + x -> ; でcd履歴からジャンプ
ctrl + x -> i で履歴パスをプロンプトに貼り付け
もちろんpercolなので履歴を自由に絞り込める
これも超便利
まとめ
フォルダ移動する際に cd ~/hogehoge みたいなのを記憶を頼りに打ってたから超楽になった・・・
どっかに 世界変わるわ って書かれてたけどこれは本当に変わるわ・・・
ありがとうありがとう