dotfiles盆栽記2: ghqとpecoでctrl+c押下時に現在のディレクトリに留まるようにする

タイトルが長い。

github.com

モチベーション

# ghq, peco
alias ghqcd='cd $(ghq list --full-path | peco)'

ghqとpecoを使って開発ディレクトリを行き来しているが、ctrl+cでキャンセルすると /Users/{USER_NAME} に遷移してしまう。キャンセル時はコマンド実行時のディレクトリに留まりたい。

こうした

# ghq, peco
alias ghqcd='`ghq list --full-path | peco`'

解説

前提として、autocdが有効になっていることを確認。ディレクトリ名だけでcdができる。

> setopt | grep autocd 
autocd

以下の感じで表題を解決できた。

# ghqでリスト表示 -> pecoでフィルタリング -> 標準出力
> ghq list --full-path | peco
/Users/{USER_NAME}/ghq/github.com/tokizuoh/dotfiles

# バッククォートで囲むことで上記の結果をコマンドとして実行
> `ghq list --full-path | peco`

> pwd
/Users/{USER_NAME}/ghq/github.com/tokizuoh/dotfiles

以前は明にcdを実行していたため、キャンセル時も遷移してしまっていた。変更したコマンドはディレクトリ名が選択されないとautocdが実行されないため遷移もしない。

参考