iTerm2 -> ssh -> gnu screen -> 分割窗口:滚轮不工作

iTerm2 -> ssh -> gnu screen -> 分割窗口:滚轮不工作

我使用 Mac OS X 作为工作站。使用 iTerm2,我使用以下命令连接到远程主机(Ubuntu Server):

ssh -t user@host screen -D -R -R

但我无法让滚轮正常工作,尤其是在使用分割窗口时。当我向上滚动时,我希望看到当前分割窗口的回滚缓冲区;相反,整个 iTerm2 回滚缓冲区都向上移动,显示了命令之前的部分输出ssh

按照termcapinfo xterm* ti@:te@建议穿上~/.screenrc这里,无论是在本地还是远程主目录中,都不会改变行为。

环境TERM变量存在xterm-256color于两个控制台中。

答案1

相关帖子Mac OS X 终端和 GNU 屏幕回滚本质上建议您不要切换到 xterm 的备用屏幕。在备用屏幕中,您不一定能够使用滚轮来查看终端的回滚。运行的程序xterm只会如果它启用了 xterm 鼠标协议,则转义序列。

默认情况下,screen不执行此操作。它有一个启用鼠标协议的设置,称为mousetrack

此命令确定screen将监视鼠标点击。启用此命令后,可以通过用鼠标指向它们并左键单击来选择以各种方式分割的区域。如果不指定开启或关闭,则显示当前状态。默认状态由"defmousetrack" 命令。

相反(参见前几个链接),一些用户改变了 xterm 配置,将屏幕命令作为滚轮的结果发送。这样做的缺点是它只适用于 xterm+screen 的组合。

答案2

我也在尝试解决这个问题。到目前为止,我了解到添加以下 termcapinfo 行:

termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007:ti@:te@'

并删除我的状态行:

# change the hardstatus settings to give an window list at the bottom of the
# screen, with the time and date and with the current window highlighted
#hardstatus alwayslastline
#hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'

将使鼠标滚动与 iTerm2 内部的屏幕很好地配合。

但是,我想要我的状态行:(

答案3

根据本文,以下命令对我有用。

$ defaults write com.googlecode.iterm2 AlternateMouseScroll -bool true

相关内容