LoginSignup
12
5

【zsh-abbr】alias もいいけど abbr も使ってみませんか?

Last updated at Posted at 2022-08-08

初めに

みなさん、alias 張ってますか?便利ですよね。
今回はその強化版と言っても良い、 abbr の紹介をしたいと思います。

3行まとめ

abbr とは

実行時に元のコマンドに展開される alias のようなものです。
abbr という名前は、 略語 の意味を持つ abbreviation からきています。
この機能は fish shell に実装されています。

例えば、alias を使って、gitコマンドに対して以下のような設定をしている方は多いと思いますが、

alias g='git'

abbrでも同じように設定できます。

abbr -a -g g git

aliasと同じじゃん?と思われるかもしれませんが、少し挙動が違います。
試しに g と打ってエンターを押すと、gitと同じ動作をするのはもちろんのこと、ログには展開後の git として記録されます。

output-abbr1.gif

gis status のような、引数やサブコマンドを取るコマンドにも使えます。

output-abbr2.gif

このような abbr の挙動には、以下の3つのメリットがあると言えます。

  • alias と同様、タイプ数の削減ができる
  • 他の人に画面を見せるときに、何のコマンドを打っているのか正確に伝えられる
  • 自分が打っているコマンドは何なのか、正確に把握できる

fish shellの機能である abbr ですが、外部のパッケージをインストールすることで、bash や zsh などの別のシェルでも使うことができます。

zsh-abbr とは

fish shellに実装されている abbr を、zshでも使用できるようにしたものです。

zsh-abbrのインストール

homebrewでインストールできます。それ以外の方法はREADME.mdを参照してください。

brew install olets/tap/zsh-abbr

abbr を使ってみよう

今回はzsh-abbrをインストールした状態で、 ~/.zshrc に設定を書き込み、 alias と同じように abbr の設定をしてみましょう。

一例として、私の abbr の設定の一部を載せておきます。

~/.zshrc
abbr -S l='exa -F'
abbr -S ll='exa -Fl'
abbr -S la='exa -Fa'
abbr -S lla='exa -Fla'
abbr -S v='vim'
abbr -S g='git'
abbr -S b='bat'
abbr -S venv='source venv/bin/activate'
abbr -S ra='rails'
abbr -S gr='grep'
abbr -S k='kubectl'
abbr -S t='tmux'

# docker
abbr -S d='docker'
abbr -S dps='docker container ls'
abbr -S dimgs='docker image ls'
abbr -S drun='docker container run'
abbr -S dcd='docker compose -d'

# git
abbr -S ga='git add'
abbr -S gacm='git add -A && git commit'
abbr -S gst='git status'
abbr -S gbr='git branch'
abbr -S gcm='git commit'
abbr -S gco='git checkout'
abbr -S gdf='git diff'
abbr -S gl='git log'
abbr -S ggr='git grep'
abbr -S gul='git pull'
abbr -S gsw='git switch'
abbr -S gush='git push'
abbr -S gget='ghq get'

どうですか?うまく動かせましたか?

補足

zsh-abbrでは、-S オプションを使うと alias と似たような形で abbr の設定ができます。

Use the --session or -S scope flag to create session abbreviations. Otherwise, or if the --user or -U scope flag is used, the Git abbreviations will be user.

https://github.com/olets/zsh-abbr#:~:text=To%20add%20a%20session%20abbreviation%2C%20use%20the%20%2D%2Dsession%20or%20%2DS%20scope%20flag.%20Otherwise%2C%20or%20if%20the%20%2D%2Duser%20or%20%2DU%20scope%20flag%20is%20used%2C%20the%20new%20abbreviation%20will%20be%20available%20to%20all%20sessions.

参考

12
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
5