ほとラボ

It works!

pecoでファイルパスを選択してよしなに挿入してくれるzshrc設定書いた

最近 peco にドハマりしているのだけど、 もはやパスを入力する操作はすべて peco でやってしまおうと思ってこんな .zshrc を書いた。

(pecoって何よ? って人は こちら を見るといいです)

export EDITOR=vim # 好きなエディタ

function peco-path() {
  local filepath="$(find . | grep -v '/\.' | peco --prompt 'PATH>')"
  [ -z "$filepath" ] && return
  if [ -n "$LBUFFER" ]; then
    BUFFER="$LBUFFER$filepath"
  else
    if [ -d "$filepath" ]; then
      BUFFER="cd $filepath"
    elif [ -f "$filepath" ]; then
      BUFFER="$EDITOR $filepath"
    fi
  fi
  CURSOR=$#BUFFER
}

zle -N peco-path
bindkey '^f' peco-path # Ctrl+f で起動

状況に応じて3パターンの動作をする

Ctrl+fpeco が起動して、 カレントディレクトリ以下のファイルとディレクトリを選択できるのだけど、 選択したあとは状況に応じて3パターンの動作をする。

ファイルを選択すると、vim が補完される

.zshrcexport EDITOR=vim していると、vim が補完されてファイルを編集することができる。

もちろん他のエディタでも可。

ディレクトリを選択すると、 cd が補完される

これと setopt auto_cdpopdコマンド でディレクトリ移動が捗る。

コマンド入力途中で呼び出すと、パスだけを挿入する

汎用的に使える。

まとめ

peco、ハマると本当に手放せなくなるので騙されたと思って使ってみるといいです。