我的 Zsh 在某个 Git 仓库中运行速度非常慢。当我在 Google 中搜索“zsh git slow”时,我得到了一堆关于 Git 的结果自动完成速度很慢,但自动完成不一定是我的问题;而是一切。
我尝试删除所有插件,但奇怪的是,当我打开新 shell 时,它什么也没做。Zsh 仍然会在我的 Git 存储库中执行 Git 操作。
我发现这个片段这一页:
function git_prompt_info() {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$ZSH_THEME_GIT_PROMPT_SUFFIX"
}
这使得一切又变得快速,但它也给了我一个如下提示:
➜ snip git:(master
请注意缺少右括号。这有点蹩脚。另外,整个事情看起来就像是我不应该做的黑客行为。
还有这个看起来很有希望的 SU 问题,但是接受的答案上的链接已经失效了。
如何才能让我的 Zsh 在 Git 仓库中运行起来不慢?
答案1
您可以执行以下命令来完全禁用 git 状态功能。
git config --global oh-my-zsh.hide-status 1
或者将以下行添加到您的~/.zshrc
.
DISABLE_UNTRACKED_FILES_DIRTY="true"
答案2
要跟踪在运行缓慢时调用的 shell 命令,您可以运行:set -x
或将其添加到启动文件中。它将显示所有命令,包括负责自动完成的命令。
如果您认为某些git
命令很慢,您可以定义一些额外的变量,例如:
exports GIT_TRACE=1
要查看更多示例,请参见:如何调试与 git/git-shell 相关的问题?
答案3
我已将其zsh-autosuggestions
作为插件移除,然后速度就更快了。就我而言,这与 无关git
。
答案4
您可以尝试使用 确认速度缓慢的原因zprof
。将其添加到您的~/.zshrc
(或等效文件):
zmodload zsh/zprof
然后在每条命令后运行zprof
以获取摘要。就我而言,是完全不相关的插件导致了速度缓慢。