Posted at

Zsh Global Aliasのあれこれ

More than 1 year has passed since last update.


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

https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/common-aliases/common-aliases.plugin.zsh


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