Answers:
Filippo Valsorda 的OS X解决方案集成了iTerm 2,tmux和mosh。
他的解决方案使用单个窗口/选项卡连接到远程外壳。该外壳在断开连接(例如,连接失败,IP更改,笔记本电脑重新启动)后仍能幸存下来,并通过触摸板,复制粘贴和彩色支持回滚。
需要注意的是,您必须从源头构建Mosh,滚动比本地滚动少,并且单击拖动被中继,因此必须按住Option进行选择。
在“终端配置文件”设置中,启用“ xterm鼠标报告”并将“报告终端类型”设置为xterm-256color。
设置~/.tmux.conf
服务器下面上。使用这些设置,如果您尝试连接并且没有会话,则会创建一个新会话。该设置还启用鼠标交互(并因此实现触摸板滚动)。
new-session
set-window-option -g mode-mouse on
set -g history-limit 30000
注意:在较新的tmux(即> 2.1)上,如所报道tmux -V
,各种鼠标选项(mouse-resize-pane,mouse-mode等)已被重写为单个选项mouse
,因此您必须更改第二行 set-window-option -g
鼠标上方on
。
当您处于键盘滚动模式(例如Ctrl- b然后[)时,此鼠标滚动也将起作用,如文章如何在tmux中滚动中所述。
Mosh的稳定版本很旧,并且不支持鼠标报告(和触摸板滚动)。要安装最新版本,请执行以下操作:
OS X(您的客户端)
brew install --HEAD mobile-shell
Linux / UNIX(服务器)
git clone https://github.com/keithw/mosh.git
cd mosh/
sudo apt-get build-dep mosh
./autogen.sh && ./configure && make
sudo make install
现在,要连接,只需键入以下内容:
mosh HOST -- tmux a
终端仿真已深入到mosh的设计中,因此,不是。Mosh的工作原理是让客户端和服务器都保持其对屏幕当前“看起来”外观的本地概念,这要求服务器进行终端仿真。这样,客户端可以在离开屏幕一段时间并丢失一些数据后刷新屏幕内容。
我认为具有mosh的IP漫游功能但没有终端仿真的应用程序最终将是一个完全不同(但更简单)的应用程序。对于此类应用程序,数据丢失(包括客户端在一段时间内处于脱网状态)将导致屏幕内容丢失或损坏。如果用户正在使用无关紧要的应用程序(例如Shell)或具有重绘功能的应用程序(例如vi
使用Control-L),则这是可接受的限制。
Mosh的实现者正在计划在应用程序中提供回滚支持,以弥补您的本地终端无法再支持这一事实。我想这将必须像screen
的回滚缓冲区那样工作:由击键控制,而不是滚动条和鼠标控制。
永恒终端(https://mistertea.github.io/EternalTerminal/)是Mosh的替代产品,它支持本机回滚并仍允许IP漫游。ET不会进行类型预测,因此如果您具有高延迟连接(如果您是用无人机或手机来回拖入),则ET可能不适合,但是ET可以完成我想要的一切并支持回滚。
在终端->首选项->配置文件->键盘中取消选中“滚动备用屏幕”,为我修复了该问题。