zsh
で alias
を展開するコマンドを作った。
人に説明する際に alias
だと伝わらないので Ctrl+space
で展開するようにした。
$ gst
カーソルが最後にある状態で Ctrl+space
を押すと以下のように展開される。
$ git status
一応、グローバルのaliasも同様に展開できるようにしてある。
G='| grep'
上記のような alias
を作成している場合も G
を打ったところで Ctrl+space
$ alias G
↓
alias | grep
以下の記述を .zshrc
に貼り付けるか、別のファイルで保存して .zshrc
から読み込めば使えます。
my-open-alias() {
if [ -z "$RBUFFER" ] ; then
my-open-alias-aux
else
zle end-of-line
fi
}
my-open-alias-aux() {
str=${LBUFFER%% }
bp=$str
str=${str##* }
bp=${bp%%${str}}
targets=`alias ${str}`
if [ $targets ]; then
cmd=`echo $targets|cut -d"=" -f2`
LBUFFER=$bp${cmd//\'/}
fi
}
zle -N my-open-alias
bindkey "^ " my-open-alias
gist:https://gist.github.com/astrsk-hori/43babb832a99b350fc97981a6473e730
バインドするkeyを変えたければ最後の行を好きなバインドに変更してください。
普段shellはあまり作成しないから本当はもっと簡単な方法あるかも。