哦,我的 Zsh 在 iTerm2 中工作,但其他终端模拟器有显示问题

如何解决哦,我的 Zsh 在 iTerm2 中工作,但其他终端模拟器有显示问题

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

这是 iTerm2 的屏幕截图,一切看起来都不错:

iTerm2: no issue

这里是问题,在 vim 中使用 :term:注意 lsecho 在每种情况下如何打印在输出的开头,而 ~ 是也重复了。

nvim terminal (running in iTerm2)

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

  • 小猫,
  • Terminal.app,
  • :term 在 vi​​m 和 nvim 中(在 Terminal.app 或 iTerm2 中运行),
  • VSCode 中的集成终端,

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

我很确定它是由 Oh My Zsh 以某种方式引起的,因为在我的 .zshrc

中注释掉以下行 时,问题就会消失
source $ZSH/oh-my-zsh.sh

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

它似乎与我使用的任何特定 omz 插件无关,因为即使我注释掉 plugins = (...) 中的 .zshrc 行,问题仍然存在。

有谁知道会发生什么?我不太明白 oh-my-zsh.sh 文件中发生了什么,但我想它与其中的某些内容有关。

解决方法

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

omz_termsupport_precmdomz_termsupport_preexec

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?