初めに
みなさん、alias 張ってますか?便利ですよね。
今回はその強化版と言っても良い、 abbr
の紹介をしたいと思います。
3行まとめ
- abbr は コマンドを展開してくれる alias のようなもの
- fishに実装されてる
- zshの人は https://github.com/olets/zsh-abbr を入れよう
abbr とは
実行時に元のコマンドに展開される alias のようなものです。
abbr という名前は、 略語
の意味を持つ abbreviation
からきています。
この機能は fish shell に実装されています。
例えば、alias を使って、git
コマンドに対して以下のような設定をしている方は多いと思いますが、
alias g='git'
abbrでも同じように設定できます。
abbr -a -g g git
aliasと同じじゃん?と思われるかもしれませんが、少し挙動が違います。
試しに g
と打ってエンターを押すと、git
と同じ動作をするのはもちろんのこと、ログには展開後の git
として記録されます。
gis status
のような、引数やサブコマンドを取るコマンドにも使えます。
このような 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 の設定の一部を載せておきます。
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.
参考