首页 > 解决方案 > Oh My Zsh 在 iTerm2 中工作,但其他终端模拟器有显示问题

问题描述

我在 macOS 上,使用带有oh-my-zsh的 zsh shell 。通常我使用iTerm2,这是一个非常好的体验。但是,当我使用另一个终端仿真器(例如:term在 vim 或 Terminal.app 中)时,我看到了一个奇怪的问题,即命令打印在输出中。我无法弄清楚为什么会这样或如何解决它。

这是 iTerm2 的截图,一切看起来都不错: iTerm2:没问题

这是:term在 vim 中使用的问题:注意在每种情况下如何在输出的开头打印 和 ,并且ls也会重复。echo~
nvim 终端(在 iTerm2 中运行)

我在除 iTerm2 之外尝试过的每个终端模拟器中都遇到了这个问题:我试过了

有一个例外: (doom) emacs 中的vterm看起来很棒,就像 iTerm2 一样。

我很确定它是由 Oh My Zsh 引起的,因为在我的注释掉以下行时问题就消失了.zshrc

source $ZSH/oh-my-zsh.sh

(但这当然不是解决办法,因为我想使用 omz!)

它似乎与我正在使用的任何特定 omz 插件无关,因为即使我plugins = (...)注释掉.zshrc.

有谁知道可能会发生什么?我真的不明白oh-my-zsh.sh文件中发生了什么,但我想它与那里的某些东西有关。

标签: macoszshiterm2oh-my-zsh

解决方案


我找到了罪魁祸首。如果我删除该文件 $ZSH/lib/termsupport.zsh(或将其重命名为具有不同的扩展名,因此它不是来自oh-my-zsh.sh),那么问题就会消失。这似乎是由于功能

omz_termsupport_precmdomz_termsupport_preexec

所以修复似乎是:DISABLE_AUTO_TITLE="true"取消注释中的行 .zshrc


推荐阅读