global alias 概要
zshにはglobal aliasあります。
通常のaliasは最初のコマンドにしか作用しないのに対し、global aliasは以降のパラメータやオプションなどにも使用できるaliasです。
.zshrc
alias -g P='-c ~/.chef/knife_prod.rb'
alias -g D='-c ~/.chef/knife_dev.rb'
このようなaliasを定義しておくと、
knife node list P
などと実行できます。
pipeで使う
pipeと絡めたglobal aliasも便利です。
参考: oh-my-zshのplugin, common-aliases
global aliasの自動展開
コマンドを他の人に見せるときなどは、そのglobal aliasを知らない人にとって意味不明になってしまいます。
そういう観点から、以下のような設定を.zshrcに書いておくとよいでしょう。
.zshrc
# expand global aliases by space
# http://blog.patshead.com/2012/11/automatically-expaning-zsh-global-aliases---simplified.html
globalias() {
if [[ $LBUFFER =~ ' [A-Z0-9]+$' ]]; then
zle _expand_alias
# zle expand-word
fi
zle self-insert
}
zle -N globalias
bindkey " " globalias