【问题标题】:oh-my-zsh very slow (load time about 10 seconds)oh-my-zsh 非常慢(加载时间大约 10 秒)
【发布时间】:2017-04-09 11:04:41
【问题描述】:

我正在使用:

Mac OS X 10.10.5 (Yosemite)
zsh 5.0.5
oh-my-zsh

问题是,终端加载时间太慢了大约 10 秒,即使打开新的终端选项卡也是如此。

我在这篇博文中尝试了解决方案:http://osxdaily.com/2010/05/06/speed-up-a-slow-terminal-by-clearing-log-files/,但这对我没有帮助。

sudo rm -rf /private/var/log/asl/*.asl

谢谢

【问题讨论】:

  • 那么,您找到解决方案了吗?

标签: terminal zsh oh-my-zsh zshrc


【解决方案1】:

节点给我带来了麻烦,这是有效的解决方案:

在我的.zshrc

# configure node version manager
export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" --no-use # This loads nvm
alias node='unalias node ; unalias npm ; nvm use default ; node $@'
alias npm='unalias node ; unalias npm ; nvm use default ; npm $@'

欲了解更多信息,请访问: https://github.com/creationix/nvm/issues/539#issuecomment-245791291

谢谢

【讨论】:

    【解决方案2】:

    请在您的主题中注释所有 git 提示代码。

    我的 Mac 上的 zsh 非常慢。任何命令,比如 cd, ls 都需要 2-5 秒,但是在我评论完主题中所有的 git prompt 代码后,情况就完全不同了。

    再次享受顺畅!

    【讨论】:

    • # plugins=(git) 评论这一行会有所作为,谢谢
    【解决方案3】:

    这些是我用来优化 shell 启动速度和减少执行命令延迟的步骤 -

    1. 如果您使用的是powerlevel9k,那么我建议您立即切换到powerlevel10k

    Powerlevel10k 是 Zsh 的主题。它强调速度、灵活性和开箱即用的体验。它是流行的 Powerlevel9k zsh 主题的重新实现。给定相同的配置,它看起来完全一样,但呈现提示的速度要快 10-100 倍。它在堆栈的每一层都进行了优化,一直到使用 libgit2 的修补版本,它可以比原始版本快 4 倍地扫描 repo。它可以消除 Zsh 启动滞后,即使它不是由具有即时提示等功能的主题引起的。

    1. 转到首选项 -> 配置文件 -> 常规 -> 命令并选择命令选项而不是登录外壳,然后将以下命令粘贴到它附近的框中。
    login -pfq username /usr/local/bin/zsh -il
    

    现在开始新标签页时,您不会看到打印的上次登录时间。如果 zsh 不在 /usr/local/bin/zsh 位置,则需要使用 brew 安装 zsh。 mac 提供的默认 zsh 位于 /usr/bin/zsh,可能使用的是 5.2 等旧版本,与 iTerm 或 oh-my-zsh 一起使用时可能会导致速度变慢。

    1. 要在 zsh 中快速粘贴,请在终端中执行以下命令。
    mkdir -p $ZSH_CUSTOM/lib && touch $ZSH_CUSTOM/lib/misc.zsh
    
    1. 第 2 点应该已经处理了缓慢的登录时间。但为了安全起见,请执行以下命令
    mkdir -p .hushlogin
    
    1. 您可能正在使用大量的插件,这些插件速度很慢并且会产生延迟。您需要指出这些插件并删除它们。为此,您将需要 zsh 分析。点击此链接了解更多详情 -

    https://stevenvanbael.com/profiling-zsh-startup

    【讨论】:

      【解决方案4】:

      我知道这是一个非常古老的问题,但我尝试了所有以前的答案,一段时间后问题又出现了。我做了尽可能多的事情来完全摆脱 oh-my-zsh。但真正的罪魁祸首是 .zsh-history。我的历史文件包含 1000 多个命令,并且正在减慢 zsh。清除它后,zsh 从 10 秒加载到 3 秒。

      这是一个自动执行此操作的简单脚本。

      HISTORY="~/.zsh-history" # Path to zsh history file
      HISTORY_LOG="path/to/where/you/wan't/to/save/history"
      MAX_HISTORY=100 # Maximum lines to keep in history
      
      if [[ $(expr $(wc -l < $HISTORY) \> $MAX_HISTORY) = "1" ]]; then
          cat $HISTORY >> $HISTORY_LOG && echo '' > $HISTORY
      fi
      

      添加此脚本以在启动时运行,它会在超过 100 行时清除您的历史记录。我把它保存到另一个位置,以防我以后不想在里面找到东西。

      您还可以更改脚本以在历史记录中始终保留 100 行。也就是去掉前n行,保持行数100。不过我个人比较喜欢这种做法。

      【讨论】:

      • 这里要注意的是,MAX_HISTORY 是要保存在历史记录中的行数,而不是命令数。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      • 2015-08-23
      • 1970-01-01
      • 2019-01-22
      相关资源
      最近更新 更多