Zsh

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