重命名自定义函数

时间:2013-02-16 21:43:27

标签: zsh function

有一个相当多的precmd(),比如检查VCS信息,我想在我在慢速安装的网络驱动器上导航时禁用它。

我想出了以下内容,我可以说slow然后换成慢速驱动器而fast将其更改回来,我想知道是否有更容易的事情?

precmd_slow() {
    not_much
}
precmd_fast() {
    precmd_slow
    somemore1
    somemore2
}

precmd() {
    precmd_fast
}

slow() {
    precmd() {
        precmd_slow
    }
}

fast() {
    precmd() {
        precmd_fast
    }
}

1 个答案:

答案 0 :(得分:2)

precmd函数外,还有一个名为precmd的数组,其中包含要同时调用的函数列表。您可以自己操作它,但zshcontrib有一个函数add-zsh-hook来简化问题。

# precmd_slow and precmd_fast defined as before

autoload add-zsh-hook
add-zsh-hook precmd precmd_fast

fast () {
    add-zsh-hook -d precmd precmd_slow
    add-zsh-hook precmd precmd_fast
}

slow () {
    add-zsh-hook -d precmd precmd_fast
    add-zsh-hook precmd precmd_slow
}