Oh-My-Zsh 覆盖我的功能?

Oh-My-Zsh 覆盖我的功能?

我将 ZSH 与 Oh My Zsh 一起使用,我试图定义一个名为 的函数git,如下所示:

function git() { echo "I'm happy because I am executed!" }

我已将函数定义放在$ZSH/custom/general.zsh.

除了这个函数之外,该文件中的其他所有内容都有效(我在那里有一堆别名)。

运行which git输出:

git () {
    case $1 in
        (commit|blame|add|log|rebase|merge) exec_scmb_expand_args "$_git_cmd" "$@" ;;
        (checkout|diff|rm|reset) exec_scmb_expand_args --relative "$_git_cmd" "$@" ;;
        (branch) _scmb_git_branch_shortcuts "${@:2}" ;;
        (*) "$_git_cmd" "$@" ;;
    esac
}

git从中删除plugins=( ... )没有用。试图在 Oh My Zsh 中找到这个函数没有结果。

我阅读了 的源代码oh-my-zsh.sh,似乎该custom目录是在 OMZ 的所有文件之后加载的,所以当我放置函数时,这对我来说没有任何意义在底部 .zshrc有效。

关于如何将函数保留在custom文件夹中的任何想法?我想让事情井井有条。

答案1

你可能安装了scm_breeze,我的理论是,在你的.zshrc采购中scm_breeze.sh,前面是oh-my-zsh.sh。如果你把 git 函数定义放在 的最后.zshrc,那么你可能会超过scm_breeze.sh,所以这就是它起作用的原因。

  1. 尝试将源代码行移动oh-my-zsh.sh到您的最末尾.zshrc,或者至少移动到超过 的源代码的位置scm_breeze.sh。重启zsh看看是否有效。 (或者您可以完全删除scm_breeze.sh

  2. 如果仍然不起作用,则备份您.zshrc和所有的oh-my-zsh东西,然后创建一个空的.zshrc,删除并重新安装oh-my-zshcurl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh然后function git() { echo "I'm happy because I am executed!" }放入$ZSH/custom/general.zs我已经测试过这个,它对我有用。之后,您可以逐渐重新应用以前的设置,逐步检查到底是什么破坏了您的配置。

相关内容