Mat*_*dan 6 ssh terminal tmux iterm2
我目前使用 iTerm2 并经常通过 SSH 连接到远程服务器并启动 tmux 会话。在所有这些服务器上,当通过 SSH 连接到它们时,我会自动创建一个 tmux 配置来启用鼠标报告,其中包含以下内容~/.tmux.conf:setw -g mode-mouse on
但是,如果我的 SSH 会话突然结束并且 tmux 没有机会禁用鼠标报告,则在终端窗口中的任何位置使用鼠标会引入奇怪的代码,例如:
$ 0;94;18M0;94;18m0;19;33M0;14;33m
我发现我不是唯一遇到此问题的人,请参阅https://code.google.com/p/iterm2/issues/detail?can=2&q=&colspec=ID%20Type%20Status%20Priority%20Milestone%20Owner% 20总结&groupby=&sort=&id=855
我相信这个问题的一个简单解决方案是在用于打开我的 SSH 会话的 bash 脚本中创建一个陷阱。每当 SSH 到 tmux 会话结束时,陷阱就可以禁用鼠标报告。
问题是我不知道如何从 bash 中禁用鼠标报告。我找到了一篇描述控制台代码的文章,但是我对此没有任何运气。
如何向终端发送命令以禁用鼠标报告?
要从 bash 向终端发送代码,您可以使用该printf命令。(echo当然,您也可以使用,但printf通常更适合发送终端命令,因为它明确支持发送 ESC 并且更容易将命令字符与参数等分开)
Tmux 以及支持终端鼠标跟踪的大多数流行程序都使用 XTerm 鼠标报告(又名“X11 鼠标报告”)。
要从 bash 禁用鼠标报告,请使用以下代码:
printf '\e[?1000l'
Run Code Online (Sandbox Code Playgroud)
ESC [ ? … l表示“DEC Private Mode Reset (DECRST)”(相同的代码以启用该功能h而不是l启用该功能结尾)。
还有一个较旧的“X10 鼠标报告”协议,它使用9代替1000,可以使用 禁用ESC [ ? 9 l,但据我所知,您不太可能看到此功能用于鼠标跟踪。
我通常使用Xterm Control Sequences文档作为我对终端代码的规范参考,我推荐它,因为它既是 XTerm 支持的实用指南,也是我发现的最全面的常用支持代码文档。
| 归档时间: |
|
| 查看次数: |
2429 次 |
| 最近记录: |