Help us understand the problem. What is going on with this article?

zsh で Git リポジトリのトップレベル ディレクトリに cd するプラグイン

More than 5 years have passed since last update.

Git リポジトリの中にいるときに、トップレベルのディレクトリに移動したくなることがある。それを1回のコマンドで簡単にできるようなプラグインを作ったので紹介する。

このプラグインでできること

cd-gitroot というプラグインを作った。これをインストールすれば cd-gitroot というコマンドが使えるようになる。

使っている様子はこんな感じ。

# こんな感じで Git リポジトリの中にディレクトリがあったとする
# doc/
# src/
#   |-scripts/
#   `-web/

% cd /home/mollifier/git_repo
% cd src/web
% pwd
/home/mollifier/git_repo/src/web
# リポジトリの奥の方にいる時でも、すぐにトップに移動できる
% cd-gitroot
% pwd
/home/mollifier/git_repo

# 引数を指定するとリポジトリトップからの相対的なパスに移動できる
% cd-gitroot src/scripts
% pwd
/home/mollifier/git_repo/src/scripts

# タブで相対的なパスが補完できる
% cd-gitroot [TAB]
doc/  src/
% cd-gitroot src/[TAB]
scripts/  web/

インストール

まず https://github.com/mollifier/cd-gitroot から cd-gitroot, _cd-gitroot と2つファイルを取ってきて $fpath の通ったところに配置する。その後に .zshrcautoload すれば OK。

例えば $HOME/zsh/functions/cd-gitroot の下に配置したい場合はこんな感じ。

% cd $HOME/zsh/functions
% git clone https://github.com/mollifier/cd-gitroot.git cd-gitroot

# または $HOME/zsh/functions/cd-gitroot ディレクトリを作成して、
# その下に cd-gitroot, _cd-gitroot を置く

~/.zshrc にこんな感じで書く。

.zshrc
fpath=($HOME/zsh/functions/cd-gitroot(N-/) $fpath)

autoload -Uz cd-gitroot
alias cdu='cd-gitroot'

最後の alias は必須じゃないけど設定しておくと便利(元の名前が長いので)。好きな名前で alias を貼っておこう。

注意としては、fpath を設定するところは autoload -Uz compinit とやってるとこより前に書くこと。そうじゃないとこのプラグインの補完がうまく動かなくなる。

使い方

Git リポジトリの中に入って cd-gitroot と打てばリポジトリのトップに移動できる。
引数を指定したらリポジトリトップからの相対的なパスに移動する。
引数のディレクトリはタブで補完できるので、リポジトリの奥の方にいる時でも簡単に他の場所に移動できる。

謝辞

このプラグインの元ネタは id:hitode909 さんのブログ記事です。

Gitのリポジトリのトップレベルにcdするコマンド

タブで補完できたらもっと便利になると思ったので改めてプラグインとして書きました。hitode909 さん、ありがとうございました!

mollifier
zsh, vim, vimperator, JavaScript, iOS, .NET に興味があるプログラマ
http://mollifier.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした