peco
peco 是一个能做交互式 filte 的工具,是 percol 的 Go 实现。特别适合在 shell 里做一些过滤操作,当然适合做日志方面的过滤。典型的使用方法是:
zsh 配置
下面这个配置主要增强了 zsh 的 history 补全,以及pwdf
可以用来迅速找一个文件,并拷贝其全路径:
function exists { which $1 &> /dev/null }
if exists peco; then
function peco_select_history() {
local tac
exists gtac && tac="gtac" || { exists tac && tac="tac" || { tac="tail -r" } }
BUFFER=$(fc -l -n 1 | eval $tac | peco --query "$LBUFFER" --layout=bottom-up)
CURSOR=$#BUFFER # move cursor
zle -R -c # refresh
}
zle -N peco_select_history
bindkey '^R' peco_select_history
fi
OS_NAME=`uname`
function pclip() {
if [ $OS_NAME = "CYGWIN" ]; then
putclip "$@";
elif [ $OS_NAME = "Darwin" ]; then
pbcopy "$@";
else
if [ -x /usr/bin/xsel ]; then
xsel -ib "$@";
else
if [ -x /usr/bin/xclip ]; then
xclip -selection c "$@";
else
echo "Neither xsel or xclip is installed!"
fi
fi
fi
}
function pwdf() {
local current_dir=`pwd`
local copied_file=`find $current_dir -type f -print | peco --layout=bottom-up`
echo -n $copied_file |pclip;
}