2012-04-13
■[Zsh]Zsh で文脈に応じて内容が変わるエイリアスを定義するやつ作った

バージョン管理狂の皆様におかれましては alias st='git status' などのエイリアスは当然定義されていることと思います。
うっかり Mercurial リポジトリの中で st を叩いてしまって fatal: Not a git repository などと言われ、ここで st つったら hg status に決まってるだろボケがとターミナルを叱責した経験も当然あることと思います。
泣く泣く gst と hst を定義したものの、3文字打つのがかったるくて枕を濡らしたことも当然一度や二度ではないことでしょう。
というわけでちょっと賢いエイリアスを定義できるやつを作りました。 Git リポジトリの中で st を叩いたら git statusになり、Mercurial リポジトリの中では hg status になる、そんな空気の読めるやつです。
uasi/zsh-context-sensitive-alias ? GitHub
こういう感じで使えます:
# {{{ in ~/.zshrc # 初期化 source csa.zsh csa_init # コンテキストを指定してエイリアスを定義する # csalias <context> <alias> <command> csalias git st 'git status' csalias hg st 'hg status' csalias rake ra 'rake' csalias bundler ra 'bundle exec rake' # cd 先のリポジトリの種類に合わせてコンテキストを設定する(詳細は後述の sample-zshrc.zsh で) function chpwd() { ... } # }}} # Git リポジトリに cd すると st == git status になる $ cd git-repo $ st # On branch master nothing to commit (working directory clean) # Hg リポジトリに cd すると st == hg status になる $ cd hg-repo $ st ? readme.txt # リポジトリでないディレクトリでは st は未定義 $ cd not-a-repo $ st zsh: command not found: st # Rakefile があるディレクトリに cd すると ra == rake になる $ cd some-ruby-lib $ ra --version rake, version 9.2.2 # Gemfile があるディレクトリに cd すると ra == bundle exec rake になる # (同じディレクトリに Rakefile があっても ra == rake にはならない) $ cd some-rails-proj $ ra --version rake, version 9.1.0
詳しい使い方は README.markdown と sample-zshrc.zsh を読んでください。
リンク元
- 1174 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&sqi=2&ved=0CDEQFjAA&url=http://d.hatena.ne.jp/uasi/20110307/1299478357&ei=vweHT_GuI_HImQXcv5XZBw&usg=AFQjCNFXMSgg1BEh-HTBcB5KqCVV0ErRqg&sig2=_A7fi4hF3U13XNMVlRDYCA
- 679 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&sqi=2&ved=0CC0QFjAB&url=http://d.hatena.ne.jp/uasi/20111121/1321804402&ei=tA-HT8PiE4vKmQWo6sGwBw&usg=AFQjCNHdoQ9vbrrix8tyyCakX2a3hIftbA
- 434 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&sqi=2&ved=0CDcQFjAC&url=http://d.hatena.ne.jp/uasi/20110307/1299478357&ei=_LCHT9fABueXiQfTtYnbCQ&usg=AFQjCNFXMSgg1BEh-HTBcB5KqCVV0ErRqg&sig2=TDl7JmmaSZ21kpQReMWh5g
- 323 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CEgQFjAD&url=http://d.hatena.ne.jp/uasi/20110307/1299478357&ei=v12HT__rJKqZiAeNpbCSBA&usg=AFQjCNFXMSgg1BEh-HTBcB5KqCVV0ErRqg&sig2=EsmbqKKN4qNF-vw6LjXW4Q
- 260 http://veadardiary.blog29.fc2.com/blog-entry-3493.html
- 177 http://onohiroki.cycling.jp/2011-07-24-1
- 169 http://d.hatena.ne.jp/pha/20120325/1332662640
- 137 http://qiita.com/items/1f01aa09ccf148542f21
- 132 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0CG8QFjAE&url=http://d.hatena.ne.jp/uasi/20111121/1321804402&ei=Bi-IT4DpJ4LqrAeJ3ZDgCg&usg=AFQjCNHdoQ9vbrrix8tyyCakX2a3hIftbA&sig2=Q4VTWqCh71KUK906rjTO-Q
- 111 https://www.google.co.jp/

