percol
$ git clone git://github.com/mooz/percol.git
$ cd percol
# python setup.py install\$ percol /var/log/syslog\$ ps aux | percol.zshrcに追記します.
function exists { which \$1 &> /dev/null }
if exists percol; then
function percol_select_history() {
local tac
exists gtac && tac="gtac" || { exists tac && tac="tac" || { tac="tail -r" } }
BUFFER=$(history -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
fiCtrl+Rでのコマンド履歴検索が percol のインターフェースで行えます.
たまーに使うコマンドとかさっと叩けます.
便利!!✌(‘ω’✌ )三 ✌(‘ω’)✌ 三( ✌‘ω’)✌
alias history='fc -l 1' されてしまってこのコードが動かないようです。
その場合は L7 を BUFFER=$(fc -l -n 1 | eval $tac | percol --query "$LBUFFER") とすると正常に動作します。
というか history って fc -l の 単なる alias だったんですね!学びがある(かなり)
\$ man zshbuiltins
...snip...
history
Same as fc -l.
$HOME/.percol.d/rc.pyに書いておくと Emacs ライクなショートカットが使えてより便利です.
# Emacs like
percol.import_keymap({
"C-h" : lambda percol: percol.command.delete_backward_char(),
"C-d" : lambda percol: percol.command.delete_forward_char(),
"C-k" : lambda percol: percol.command.kill_end_of_line(),
"C-y" : lambda percol: percol.command.yank(),
"C-a" : lambda percol: percol.command.beginning_of_line(),
"C-e" : lambda percol: percol.command.end_of_line(),
"C-b" : lambda percol: percol.command.backward_char(),
"C-f" : lambda percol: percol.command.forward_char(),
"C-n" : lambda percol: percol.command.select_next(),
"C-p" : lambda percol: percol.command.select_previous(),
"C-v" : lambda percol: percol.command.select_next_page(),
"M-v" : lambda percol: percol.command.select_previous_page(),
"M-<" : lambda percol: percol.command.select_top(),
"M->" : lambda percol: percol.command.select_bottom(),
"C-m" : lambda percol: percol.finish(),
"C-j" : lambda percol: percol.finish(),
"C-g" : lambda percol: percol.cancel(),
})autojump
cdで移動したディレクトリを記録して,カレントディレクトリに関係なく過去に移動したディレクトリに移動できるコマンドです.
$ git clone git://github.com/joelthelion/autojump.git
$ cd autojump
# ./install.py\$ brew install autojump.zshrcに以下のように書いておけば<TAB>で補完が効くようになります.
[[ -s /usr/share/autojump/autojump.zsh ]] && . /usr/share/autojump/autojump.zsh
# for homebrew
[[ -s `brew --prefix`/etc/autojump.sh ]] && . `brew --prefix`/etc/autojump.sh使い方
cdで移動したディレクトリが記録されていきます.
導入後に移動したディレクトリであれば,jコマンドで素早く移動できます.
例えば Terminal 上で以下のように入力して<TAB>を押すと,foo が含まれる移動したことがあるディレクトリ一覧が表示され,<ENTER>でそのディレクトリに移動します.
\$ j foo