2

有一个 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
    }
}
4

1 回答 1

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
}
于 2013-02-17T17:48:11.250 回答