CatCoding

使用 peco 飞起 zsh

2019-01-04

peco

peco 是一个能做交互式 filte 的工具,是 percol 的 Go 实现。特别适合在 shell 里做一些过滤操作,当然适合做日志方面的过滤。典型的使用方法是:

gifgif

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;
}

公号同步更新,欢迎关注👻
Tags: Linux