git ls-tree


Gitにls-treeというサブコマンドがあったのを知ったのでメモ。

Terminal
$ git ls-tree -dr --name-only --full-name --full-tree HEAD

リポジトリ内の全ディレクトリが表示できる。っぽい。速い。

Terminal
$ git rev-parse --show-toplevel

でリポジトリのルートディレクトリの絶対パスが取得できるので、

.bashrc
peco-cd() {
  cd "$(git ls-tree -dr --name-only --full-name --full-tree HEAD | sed -e "s|^|`git rev-parse --show-toplevel`/|" | peco)"
}

とか書いて

Terminal
$ peco-cd

でやったーって感じになる。


ターミナルだけじゃなくてunite.vimでもdirectory_rec/asyncの代わりに使いたい感じだ( ˘ω˘)