zshでaliasを展開する

  • 1
    Like
  • 0
    Comment

zshalias を展開するコマンドを作った。

人に説明する際に 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はあまり作成しないから本当はもっと簡単な方法あるかも。