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
fi
Ctrl+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