解决 Oh My Zshgit 目录下变得卡顿的问题

临床表现

  1. 进入到含有 git 仓库的目录时,终端长时间无响应,或卡顿
  2. 在该类型目录下,进行的任意操作,即使命令本身执行很快也需要很长时间终端才有响应
  3. 在新窗口下通过 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

总结

对于我来说,因为是在虚拟机中遇到这个问题,非常的影响操作的流畅度,所以我选择了方案一,相当于是直接的关掉了这个特性。

参考

  1. 解決 Oh My Zsh 在大型 git repository 裡面很慢的問題 – Jack Yu – Medium
  2. 解决 oh my zsh 在 git 目录中变慢的问题 · dzlzh/vimwiki Wiki · GitHub

1 个评论

  1. 可以加一个$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”
    }

    啦啦啦啦啦

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据