zsh + peco-select-histroy でhistoryをユニークにする


update: 同じことをしている方がいて、そちらのほうが優秀なので、下記参照


巷に公開されている peco-select-history だと、同じコマンドの履歴が沢山表示されて不便なので、ユニークに表示されるようにした。
ユニークにしたときに、順番が崩れないようにソートしなおしてる。

function peco-select-history() {
    BUFFER=$(\history 1 | \
                    sort -r -k 2 |\
                    uniq -1 | \
                    sort -r | \
                    awk '$1=$1' | \
                    cut -d" " -f 2- | \
                    peco --query "$LBUFFER")
    CURSOR=$#BUFFER
    zle clear-screen
}
zle -N peco-select-history
bindkey '^r' peco-select-history