我将 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
,所以这就是它起作用的原因。
尝试将源代码行移动
oh-my-zsh.sh
到您的最末尾.zshrc
,或者至少移动到超过 的源代码的位置scm_breeze.sh
。重启zsh看看是否有效。 (或者您可以完全删除scm_breeze.sh
)如果仍然不起作用,则备份您
.zshrc
和所有的oh-my-zsh
东西,然后创建一个空的.zshrc
,删除并重新安装oh-my-zsh
,curl -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
,我已经测试过这个,它对我有用。之后,您可以逐渐重新应用以前的设置,逐步检查到底是什么破坏了您的配置。