- gitのalias機能をいろいろ定義しておくとコマンドを短く打てて便利ですね
- ~/.gitconfigにあるgitのaliasを.zshrcに転記するのが面倒ですね
- そこで、gitのaliasをzshに簡単に組み込めるスクリプトを生成するrubyスクリプトを作りました (^o^)/
こんな感じのaliasがgitに登録してあるとします
$ git config --global --get-regexp 'alias\..+'
alias.l log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ai) %C(bold blue)<%an>%Creset' --abbrev-commit
alias.st status --untracked-files=all --short --branch
alias.ci commit
alias.civ commit --verbose
alias.civc commit --verbose -c HEAD
alias.gitk-bg !gitk HEAD --not $(git rev-parse --remotes) &
これを以下のようなzshで解釈できるaliasとして出力します
alias gl='git log --graph --pretty=format:"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ai) %C(bold blue)<%an>%Creset" --abbrev-commit'
alias gst='git status --untracked-files=all --short --branch'
alias gci='git commit'
alias gciv='git commit --verbose'
alias gcivc='git commit --verbose -c HEAD'
alias ggitk-bg='gitk HEAD --not $(git rev-parse --remotes) &'
既存のコマンドと同名のaliasは、定義されないようにしています。
- コマンドのエスケープがいい加減なので、aliasに"とか'が使われているとやばそうです
- alias foobar='hoge 'piyo'' みたいに出力したいのだけど、 zshが期待通り解釈してくれないので、' を " にしてます
- !ではじまるaliasはコマンドそのものを呼びだすようにしてあります
- あまりテストしてないのでご注意ください!!!
- 既存のコマンドをwhichで判定しているので、例外あるかもしれません
- ruby 1.9.2 の erbコマンド
- zsh
- curlかwgetなどファイルをダウンロードできるもの
このスクリプトをダウンロードして、erbでzshのためのaliasを生成します
$ mkdir "$HOME/.zsh/" && cd "$HOME/.zsh/"
$ curl -O https://raw.github.com/gist/1133730/git-aliases.zsh.erb
$ erb -T - git-aliases.zsh.erb > git-aliases.zsh
.zshrcこれを最後に追記してシェルを再起動すればOKです
[[ -f "$HOME/.zsh/git-aliases.zsh" ]] && . "$HOME/.zsh/git-aliases.zsh"
.zshrcにこう書いておけば、シェルを立ち上げると毎回新しいgitのaliasを生成してくれて便利かもしれないし、シェルの起動が遅いかもしれない
[[ -f "$HOME/.zsh/git-aliases.zsh.erb" && -x $(which erb) ]] && erb -T - "$HOME/.zsh/git-aliases.zsh.erb" > "$HOME/.zsh/git-aliases.zsh"
[[ -f "$HOME/.zsh/git-aliases.zsh" ]] && . "$HOME/.zsh/git-aliases.zsh"
- 波動砲発射
ドキュメント書いたら、そういうツールっぽく思えてきた