有没有办法使用mosh
不放弃本地回滚?
基本上,在某些情况下,IP 漫游确实有用且需要,但额外的终端仿真和密钥预测似乎只是摆脱了本地回滚缓冲区行和会话历史记录。
答案1
菲利波·瓦尔索达有一个适用于 OS X 的解决方案,包含 iTerm 2、tmux 和 mosh。
他的解决方案使用单个窗口/选项卡连接到远程 shell。 shell 可以承受断开连接(例如,连接失败、IP 更改、笔记本电脑重新启动),并支持通过触摸板回滚、复制粘贴和颜色。
需要注意的是,您必须从源代码构建 mosh,滚动不如原生流畅,并且单击拖动是中继的,因此您必须按住 Option 才能选择。
iTerm
在终端配置文件设置中,启用 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- bthen [)时,此鼠标滚动也将起作用,如文章中所述如何在 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
答案2
终端仿真已经深深融入到了设计中莫什, 所以不行。 Mosh 的工作原理是让客户端和服务器各自维护其对屏幕当前“外观”的本地想法,这需要服务器进行终端仿真。这就是客户端在离开一段时间并丢失一些数据后能够刷新屏幕内容的方式。
我认为具有 mosh IP 漫游功能但没有终端仿真的应用程序最终将成为一个完全不同(但更简单)的应用程序。对于此类应用程序,数据丢失(包括客户端断网一段时间)将导致屏幕内容丢失或损坏。如果用户使用的应用程序对此无关紧要(例如 shell)或具有重绘功能的应用程序(例如vi
使用 Control-L),那么这是可接受的限制。
Mosh的实现者正在计划在应用程序中支持回滚不过,为了弥补您的本地终端无法再执行此操作的事实。我想这必须有点像screen
回滚缓冲区:由击键控制,而不是滚动条和鼠标。
答案3
永恒终点站(https://mistertea.github.io/EternalTerminal/)是 Mosh 的替代方案,支持本机回滚并仍然允许 IP 漫游。 ET 不进行打字预测,因此如果您的连接延迟较高(如果您通过 ssh 连接到无人机或手机),它可能不适合,但就个人而言,ET 可以完成我想要的一切并支持回滚。
答案4
取消选中“终端”->“首选项”->“配置文件”->“键盘”中的“滚动备用屏幕”为我解决了这个问题。