我最近开始使用Zsh,它很棒.不幸的是,对于这个项目,我认为我的"主要"项目,一切都很慢.我的意思是每次我运行一个命令 - ls例如 - 在执行命令的时间与我再次使用终端之间的时间差不多是五秒钟.
这个回购让Zsh如此缓慢有什么不同?我认为这是Zsh特有的,因为在我开始使用Zsh之前没有问题.我尝试过做git clean但没有任何明显的区别.
如果重要的话,我在Mac OS X上.
更新:原来我的这一行.zshenv是什么让它变慢:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function
Run Code Online (Sandbox Code Playgroud)
如果我对该行进行评论,则需要大约3秒钟,大约需要1秒钟.不幸的是,我需要那条线,因为我的很多项目都使用RVM.我现在不知道该怎么办.
更新2:这似乎是一个特别的哦哦我的zsh的事情.如果我没有加载~/.oh-my-zsh/oh-my-zsh.sh,我没有问题.
Pas*_*ius 119
您可以将其添加到您的git配置中,zsh将不再检查状态
git config --add oh-my-zsh.hide-status 1
git config --add oh-my-zsh.hide-dirty 1
Run Code Online (Sandbox Code Playgroud)
lib/git.zsh中有两个中央git函数:
git_prompt_info()parse_git_dirty()每个方法都有一个git config开关来禁用它:
oh-my-zsh.hide-statusoh-my-zsh.hide-dirty有些主题会创建自己的git查询,有时会忽略这些标记.
Pee*_*ela 17
哦_my_zsh对于某些回购似乎很慢,因为它会在每个命令后检查回购的状态.可以在新版本的.oh_my_zsh中覆盖此行为.只需取消注释.zshrc中的以下行:
DISABLE_UNTRACKED_FILES_DIRTY = "真"
在此之后,重新启动终端或运行以下命令:
源〜/ .zshrc
Von*_*onC 11
有很多方法可以加快速度oh-my-zsh,正如" zsh开始速度非常慢 " 所详述的那样,清理插件部分.
例如,博客文章" Fix for oh-my-zsh git-svn prompt slowness "提到该parse_git_dirty功能是一个潜在的问题.
Jam*_* EJ 11
它可能是在每个命令之后调用git和rvm的主题.
对我来说,改变ZSH_THEME="juanghurtadoto"以完全ZSH_THEME="miloshadzic"删除每个命令后的2秒延迟.
主题可以在https://github.com/robbyrussell/oh-my-zsh/wiki/themes找到
Ben*_*kin 10
对我来说,VirtualBox(来宾)的速度很慢,因为我使用的是同步文件夹.我仍然想在OS X(主机)上启用它,它足够快.而不是使用与repo一起存储的本地配置设置,并且会在guest虚拟机和主机上更改它,我只在guest虚拟机上使用全局配置设置:
git config --global --add oh-my-zsh.hide-dirty 1
Run Code Online (Sandbox Code Playgroud)
如果我只想要一个回购:
git config --add oh-my-zsh.hide-dirty 1
Run Code Online (Sandbox Code Playgroud)
Jay*_*van 10
对于其他提出这个问题并希望改善 zsh git 延迟的人,以下方法将我的延迟从 减少40ms到4ms:
编译并安装优化git-branch-name命令:
git clone https://github.com/notfed/git-branch-name
cd git-branch-name
make
sudo install git-branch-name /usr/local/bin/
Run Code Online (Sandbox Code Playgroud)
将其添加到您的~/.zshrc:
function git_prompt_info() {
ref=$(git-branch-name -q -h 12 -b 64) || return
echo "${ZSH_THEME_GIT_PROMPT_PREFIX}${ref}${ZSH_THEME_GIT_PROMPT_CLEAN}${ZSH_THEME_GIT_PROMPT_SUFFIX}"
}
Run Code Online (Sandbox Code Playgroud)
(-h和-b标志分别控制分支名称和哈希的截断长度。)
有了这个,我可以按住 Enter 并且不会遇到任何延迟。
我终于弄明白了.我的项目有一个rake包含大量文件的文件夹(如20,000).我不知道该文件夹是什么,但我删除它,Zsh不再慢,我的应用程序似乎仍然有效.
小智 5
顶级解决方案建议
git config --add oh-my-zsh.hide-status 1
git config --add oh-my-zsh.hide-dirty 1
Run Code Online (Sandbox Code Playgroud)
它可以工作,但会禁用一些很酷的功能,例如分支名称和脏度。对我来说,有效的是压缩 git 的数据库,但使用aggressive标志:
git gc --aggressive
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32433 次 |
| 最近记录: |