osy*_*oyu 33 terminal iterm2 macos
我在优胜美地使用 iTerm2 2.1.1。没有 tmux。
当 iTerm 失去焦点时(当通过 Cmd-Tab 切换到另一个应用程序或单击另一个窗口时),a^[[I
和^[[O
似乎被发送到终端。这会导致 a^[[I^[[O
出现,或者更令人沮丧的是,在 Vim 中,这种组合打开了另一个小缓冲区。
示例:启动后按 Cmd-Tab 几次 cat
% cat
^[[I^[[O^[[I^[[O^[[I^[[O^[[I^[[O^[[I^[[O^[[I^[[O^[[I^[[O^[[I^[[O^[[I
Run Code Online (Sandbox Code Playgroud)
这只发生在 iTerm 上,而不发生在 Terminal.app 上。此外,它在 bash 或 sh 上重现,因此它似乎不是 zsh 问题。一些谷歌搜索认为这是一个“焦点”问题,但是终端的含义是什么“焦点”,有什么办法可以禁用或避免这种情况?
Pau*_*ker 14
我没有方便的 Mac 来测试这个答案,但是我在 Linux 下的 XTerm 中偶尔会遇到这个问题(假设 iTerm2 遵循相同的控制代码)您可能会发现下面的修复很有帮助。
在您看到问题的终端内运行以下 shell 命令:
printf "\e[?1004l"
Run Code Online (Sandbox Code Playgroud)
(请注意,最后一个字符是小写的 'ell'。)
此 ANSI 控制序列类似于 Thomas Dickey 的回答中列出的控制序列,但它关闭(而不是打开)该功能。它应该通过完全停止字符出现来解决所有应用程序中的问题,而不仅仅是 Vim。
在 Linux 上,我可以通过以下步骤演示此控制序列:
xterm
通过printf "\e[?1004h"
在其中运行来运行并启用该功能。xeyes
或其他一些 GUI 应用程序。(出于某种原因,在有问题的 XTerm 启动应用程序之前,这种影响不会发生在我身上。有人知道为什么吗?)^[[O
并^[[I
“键入”到原始 XTerm 中。printf "\e[?1004l"
(禁用该功能,如上面修复中所述)。xeyes
,切换焦点”步骤,但这次在终端中看不到任何字符输入。我个人只有在无意中将二进制输出转储到终端时才会看到这个问题,但是如果您更频繁地遇到它,您可能希望将其添加printf
到您的 shell 的交互式启动脚本中(例如~/.bashrc
)。如果该功能已被禁用,则发送控制代码似乎没有任何危害(至少在 XTerm 下),因此即使您有时只看到此问题,它也应该是安全的。
如果您担心您的 shell 总是生成该输出,也许是因为您有时在不能很好地处理这些控制代码的地方使用它,或者如果问题有时在 shell 启动后触发,那么您可能更喜欢设置设置别名(例如 with alias focusfix='printf "\e[?1004l"'
)以使其更方便手动运行。
术语“焦点”是指当前正在接受键盘和鼠标输入事件的终端(或窗口)。只有一个人可以集中注意力;有一些协议用于确定如何在图形环境中获得和失去焦点,探索这些协议是没有帮助的。
从描述中(另请参阅重新获得焦点时的 Tmux 当前窗格指示器),看来 iTerm2 实现了此xterm
功能:
FocusIn/FocusOut 可以与任何鼠标事件组合,因为它使用不同的协议。设置后,它会导致 xterm 在终端获得焦点时发送 CSI I,在失去焦点时发送 CSI O。
它由私有模式 1004 启用(2007 年添加到 xterm,补丁 #224):
CSI ? Pm h
DEC Private Mode Set (DECSET).
Ps = 1 0 0 4 -> Send FocusIn/FocusOut events.
Run Code Online (Sandbox Code Playgroud)
并且可能与此补丁相关:Vim - 添加对焦点报告模式(DECSET/DECRST 1004)的支持适用于 xterm 兼容终端,这等同于一种设置中“xterm”鼠标功能的所有行为:
/* xterm 兼容终端和 tmux 支持焦点报告。*/
所以...你可以通过告诉 vim 你的终端不使用 xterm 鼠标协议来禁用它。引用的补丁告诉 vim 打开 FocusIn/FocusOut 功能(通常应该关闭),如果其逻辑存在一些缺陷,可能会在退出 vim 后保持启用该功能。
虽然 vim 是启用该模式的最有可能的原因,但也有可能是某些其他程序(或脚本)将其打开。script
正如另一个答案中所建议的,您可以通过使用程序将输出收集到终端(生成文件)来缩小范围typescript
。分析这一点可能非常耗时(并且由于该站点似乎不支持附件,因此它似乎不适合征求详细讨论)。unmap
为此,我通常将打字稿文件转换为可读形式。
归档时间: |
|
查看次数: |
6409 次 |
最近记录: |