哦,我的ZSH慢,但只为某些Git回购

我最近开始使用Zsh,这真棒。 不幸的是,对于这个项目我认为是我的“主要”项目,一切都很慢。 我的意思是说,每次我运行一个命令(例如ls时,命令执行的时间与我可以再次使用terminal的时间之间大约有五秒的延迟。

这个回购让Zsh如此缓慢有什么不同? 我认为这是一个Zsh特定的事情,因为在我开始使用Zsh之前没有问题。 我试图做一个git clean但没有任何明显的差异。

如果有问题,我在Mac OS X上。

更新:原来我的.zshenv这一行是什么让它慢:

 [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function 

如果我评论这条线,则需要花费大约3秒到大约1秒。 不幸的是,我需要这条线,因为我的许多项目使用RVM。 我现在不知道该怎么做。

更新2 :这似乎是具体的哦,我的zsh的事情。 如果我不加载~/.oh-my-zsh/oh-my-zsh.sh ,我没有问题。

你可以添加到你的gitconfiguration,zsh不会再检查状态

 git config --add oh-my-zsh.hide-status 1 git config --add oh-my-zsh.hide-dirty 1 

详细答案: lib / git.zsh中有两个中央git函数(git_prompt_info()和parse_git_dirty())。 每个方法都有一个git config开关来禁用它(oh-my-zsh.hide-status和oh-my-zsh.hide-dirty)

有些主题创build自己的git查询,有时忽略这些标志 。

有很多种方法可以加快oh-my-zsh速度,详见“ zsh开始非常慢 ”,清理插件部分。

例如,博客文章“ 修复oh-my-zsh git-svn提示缓慢 ”提到parse_git_dirty函数是一个潜在的问题。

这可能是每个命令之后调用git和rvm的主题。

对我来说,将ZSH_THEME="juanghurtadoto"更改为ZSH_THEME="juanghurtadoto"ZSH_THEME="miloshadzic"消除了每个命令后的2秒延迟。

主题可以在https://github.com/robbyrussell/oh-my-zsh/wiki/themesfind

Oh_my_zsh似乎是一些回购缓慢,因为它检查每个命令后回购的状态。 这个行为可以在.oh_my_zsh的新版本中被覆盖。 只需在.zshrc中取消注释以下行:

DISABLE_UNTRACKED_FILES_DIRTY = “真”

之后,重新启动您的terminal或运行以下:

源〜/ .zshrc

我终于弄明白了。 我的项目有一个rake文件夹与大量的文件(如20,000)。 我不知道该文件夹在那里,但我删除了它,Zsh不再是缓慢的,我的应用程序似乎仍然工作。

对于我来说,它在VirtualBox(guest)上很慢,因为我正在使用一个同步文件夹。 我仍然希望它在OS X(主机)上启用它足够快。 而不是使用存储在repo中的本地configuration设置,而是在来宾和主机上更改它,我只在来宾上使用全局configuration设置:

 git config --global --add oh-my-zsh.hide-dirty 1 

如果我只想要一个回购:

 git config --add oh-my-zsh.hide-dirty 1 

也许我能想到的最简单可靠的解决方法就是input

 bash 

我在我的巨大的git仓库目录中做了这一切,一切都很好。