在不放弃本地回滚/历史记录的情况下使用 Mosh?

cns*_*nst 78 terminal-emulator terminal scrolling console mosh

mosh没有不放弃本地回滚的使用方法?

基本上,在某些情况下,IP 漫游确实有用且需要,但额外的终端仿真和密钥预测似乎只是摆脱了本地回滚缓冲区行和会话历史记录。

rbr*_*wer 50

Filippo Valsorda 有一个适用于 OS X解决方案,其中包含 iTerm 2、tmux 和 mosh

他的解决方案使用单个窗口/选项卡连接到远程 shell。外壳在断开连接(例如,连接失败、IP 更改、膝上型电脑重新启动)后仍然存在,并支持使用触摸板、复制粘贴和颜色进行回滚。

需要注意的是,您必须从源代码构建 mosh,滚动不如原生流畅,并且单击拖动是中继,因此您必须按住 Option 进行选择。

  • 术语

    在终端配置文件设置中,启用 xterm 鼠标报告并将报告终端类型设置为xterm-256color

  • 多路复用器

    设置~/.tmux.conf服务器下面上。使用这些设置,如果您尝试附加并且没有会话,则会创建一个新会话。这些设置还启用鼠标交互(以及触摸板滚动)。

    new-session
    set-window-option -g mode-mouse on
    set -g history-limit 30000
    
    Run Code Online (Sandbox Code Playgroud)

    注意:在最近的 tmux(即 > 2.1)上,如 所报告的tmux -V,各种鼠标选项(鼠标调整大小窗格、鼠标模式等)已被重写为单个选项mouse,因此您必须更改第二行上面改为 set-window-option -g鼠标on

    当您处于键盘滚动模式(例如Ctrl- bthen [)时,此鼠标滚动也将起作用,如如何在 tmux 中滚动一文中所述

  • 莫什

    mosh 的稳定版本很旧,不支持鼠标报告(和触摸板滚动)。要安装最新版本,请执行以下操作:

    OS X(您的客户端)

    brew install --HEAD mobile-shell
    
    Run Code Online (Sandbox Code Playgroud)

    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
    
    Run Code Online (Sandbox Code Playgroud)

现在,要连接,只需键入以下内容:

mosh HOST -- tmux a
Run Code Online (Sandbox Code Playgroud)

  • 内嵌链接中的重要信息被认为是一种很好的形式。 (5认同)
  • 尽管由于技术原因这个答案被否决了,但它可能是使用 mosh 在本地客户端上获得体面回滚的最佳(唯一?)方法。 (2认同)

Cel*_*ada 18

终端仿真深入到mosh的设计中,所以,不。Mosh 的工作原理是让客户端和服务器都保持其对当前屏幕“外观”的本地概念,这需要服务器进行终端仿真。这就是客户端在离开一段时间并丢失一些数据后能够刷新屏幕内容的方式。

我认为具有 mosh 的 IP 漫游功能但没有终端仿真的应用程序最终会成为完全不同(但更简单)的应用程序。对于此类应用程序,数据丢失(包括客户端离线一段时间)将导致屏幕内容丢失或损坏。如果用户正在使用无关紧要的应用程序(例如 shell)或具有重绘功能的应用程序(例如vi使用 Control-L),则这是可以接受的限制。

不过,Mosh 的实现者正在计划在应用程序中支持回滚,以弥补您的本地终端无法再这样做的事实。我想这必须有点像screen的回滚缓冲区:由击键控制,而不是滚动条和鼠标。


小智 6

Eternal Terminal ( https://mistertea.github.io/EternalTerminal/ ) 是 Mosh 的替代品,它支持原生回滚并且仍然允许 IP 漫游。ET 不进行打字预测,因此如果您有高延迟连接(如果您通过 ssh 连接到无人机或手机),它可能不适合,但 ET 个人可以做我想做的一切并支持回滚。