使用Mosh而不放弃本地回滚/历史记录?


Answers:


42

Filippo Valsorda 的OS X解决方案集成了iTerm 2,tmux和mosh

他的解决方案使用单个窗口/选项卡连接到远程外壳。该外壳在断开连接(例如,连接失败,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- b然后[)时,此鼠标滚动也将起作用,如文章如何在tmux中滚动中所述

  • sh

    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

5
从内联链接粘贴重要信息被认为是一种很好的形式。
HalosGhost

2
尽管此答案由于技术原因而被否决,但这可能是使用mosh在本地客户端上进行体面回滚的最佳方法(唯一?)。
jayhendren 2014年

@jayhendren:或者您可以简单地使用Eternal Terminal
Dan Dascalescu

无需屈尊。我的评论来自2014
。Eternal

15

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

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

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



1

在终端->首选项->配置文件->键盘中取消选中“滚动备用屏幕”,为我修复了该问题。


1
这个答案没有意义,您甚至从哪里得到这样的菜单?
cnst 2015年

3
该prefs设置存在,但是取消选中它会使滚动仅在我的本地窗口中起作用,即向下滚动使我使用mosh命令之前的行进入视图。它没有显示任何滚动到远程会话顶部的内容。
mARK 2015年

2
尝试过此操作,但不允许您滚动浏览Mosh会话
magodiez
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.