哦,我的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仓库目录中做了这一切,一切都很好。