解决 Oh My Zsh
在 git
目录下变得卡顿的问题
临床表现
- 进入到含有
git
仓库的目录时,终端长时间无响应,或卡顿 - 在该类型目录下,进行的任意操作,即使命令本身执行很快也需要很长时间终端才有响应
- 在新窗口下通过
ps -aux | grep git
可见git status ...
的命令正在执行
原因
Oh My Zsh
为终端增加了自动跟踪git
仓库变化的能力,其实是在检测到当前目录是在git
管理的目录中时,执行了一系列的操作来获取到变化,并格式化为好看的信息显示在终端上
解决方案
方案一
覆盖 Oh My Zsh
默认的方法,在 ~/.oh-my-zsh/custom/
文件夹中加入一个自定义脚本,以 .zsh
作为后缀名,比如:disable_git_info.zsh
1234
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"
}
方案二
通过设置标识关闭 dirty
检查
1
git config — add oh-my-zsh.hide-dirty 1
若需要打开,则:
1
git config — add oh-my-zsh.hide-dirty 0
总结
对于我来说,因为是在虚拟机中遇到这个问题,非常的影响操作的流畅度,所以我选择了方案一,相当于是直接的关掉了这个特性。
可以加一个$ZSH_THEME_GIT_PROMPT_CLEAN让括号完整
完整代码
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_CLEAN$ZSH_THEME_GIT_PROMPT_SUFFIX”
}