zsh + peco-select-histroyで未入力状態からCtrl-rを押してもpecoを起動できるようにする


巷にある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 ""が動くようになりました。このスクリプトは不要です。