巷にあるpeco-select-historyだと未入力状態からCtrl-rを押してもpecoが起動しなくてイラつくので、未入力状態の場合にpecoの引数を変えることでhistory -n 1
の順で候補が表示されるようにする。
function peco-select-history() {
local tac
if which tac > /dev/null; then
tac="tac"
else
tac="tail -r"
fi
if [ -n "$LBUFFER" ]; then
BUFFER=$(history -n 1 | \
eval $tac | \
peco --query "$LBUFFER")
else
BUFFER=$(history -n 1 | \
eval $tac | \
peco)
fi
CURSOR=$#BUFFER
zle clear-screen
}
最初は--query "$LBUFFER"
を変数化しようと思ったけど、うまくいかなかったのでこうなってしまった。
追記: コメントにある通り、再インストールしたらpeco --query ""
が動くようになりました。このスクリプトは不要です。