Terminal 什么';如果我经常在前景和背景之间切换mosh,终端设置是什么

Terminal 什么';如果我经常在前景和背景之间切换mosh,终端设置是什么,terminal,mosh,Terminal,Mosh,我正在使用mosh访问我的远程Ubuntu机器。我在Windows上使用的客户端是MobaXterm,它有一个mosh插件。我在Ubuntu上使用的就是我从apt get获得的mosh客户端。 问题是我通常在bash中打开一个vim来编辑代码,然后使用Ctrl+Z返回bash,然后使用fg返回vim。但是,当我点击Ctrl+Z时,代码的内容仍然在终端窗口中,bash就在它下面。SSH工作得非常好。代码消失了,只有这样的东西出现了 [1]+ Stopped vim

我正在使用mosh访问我的远程Ubuntu机器。我在Windows上使用的客户端是MobaXterm,它有一个mosh插件。我在Ubuntu上使用的就是我从apt get获得的mosh客户端。 问题是我通常在bash中打开一个vim来编辑代码,然后使用Ctrl+Z返回bash,然后使用fg返回vim。但是,当我点击Ctrl+Z时,代码的内容仍然在终端窗口中,bash就在它下面。SSH工作得非常好。代码消失了,只有这样的东西出现了

[1]+  Stopped                 vim .bashrc
我想这与我的终端设置有关。我使用Ubuntu的默认设置$术语返回xterm。我在MobaXterm中使用的终端也是xterm。
有人能告诉我如何获得与SSH连接相同的结果吗?

屏幕被清除,只剩下一条短消息的行为听起来像是一个在xterm的正常屏幕和备用屏幕之间切换的程序。MobaXterm使用PuTTY,它从xterm实现了这个特性

TERM
的设置告诉termcap/terminfo/curses库要使用哪个终端描述。这就是区别所在:

  • 对于mosh程序,该库位于本地计算机上
  • 使用ssh时,该库位于远程计算机上
更复杂的是:vim实际上在运行它的机器上使用终端数据库,但mosh对发送到终端的转义序列拥有最终决定权。因此,听起来mosh似乎看到了一个本地终端描述,其中
smcup
rmcup
终端功能没有告诉“xterm”切换到备用屏幕或从备用屏幕切换

我手头没有要检查的,但你可以检查一下。mosh是一个诅咒/课程计划。因此,假设MobaXterm也有程序是合理的。 使用
infocmp
程序,您可以查看其终端数据库中的这些值,例如

smcup=\E[?1049h,
rmcup=\E[?1049l,

后者是原始的xterm序列(1990年代早期),前者是现代的xterm序列(1990年代后期)。有趣的是,一些“xterm”模拟器没有实现较新的模拟器。有关详细信息,请参阅xterm常见问题解答

如果您有
infocmp
,那么您可能会有。您可以通过以下方式修改本地终端数据库:

  • 使用
    infocmp
    创建包含终端描述的文件
  • 编辑文件(为这两个值添加行,或者如果新值不起作用,则使用旧值)
  • 使用
    tic
    重新编译终端描述
(如果MobaXterm提供的mosh没有curses实用程序,那么除了使用MobaXterm提交错误报告之外,您没有什么可以做的)

以上是6月8日写的。我昨晚看了MobaXterm,并发表了一些评论:

  • MobaXterm是自包含的(一个使用busybox的应用程序),所以我通常不会太注意它
  • 它对xterm有一个比较老的终端描述(我可以精确地指出它,但很快,可能是5-8年前)
  • 交替屏幕切换要老得多,正如您所指出的,没有多少事情要做,我没有进一步调查
  • 如果有必要,您可能会从Linux复制一个已编译的terminfo条目(但这会造成麻烦)

对于Ubuntu,我快速查看了我的14.04机器,其中vim运行在gnome终端和xterm中。巧合的是,我最近查看了前者的终端描述,发现我为
gnome
(过时)或
vte
(首选)编写的条目使用了旧的xterm
smcup
/
rmcup
。Ubuntu14.04太旧了,gnome终端无法正确识别较新的xterm
smcup
,也无法使用
TERM=xterm
切换到备用屏幕。但是它确实与
TERM=vte
(或者
TERM=gnome
)一起工作。如果安装了
ncurses term
软件包,您将获得这些说明。

谢谢您的帮助。MobaXterm没有infocmp。也许我会放弃Windows客户端。现在我只想在Ubuntu客户端上完成。infocmp为我的Ubuntu客户端和Ubuntu服务器返回现代xterm数据库。我将它们更改为原来的,但是当我点击Ctrl+Z时,vim屏幕变成了一个完整的黑屏,bash历史记录消失了。你有更多的想法吗?
smcup=\E[?47h,
rmcup=\E[2J\E[?47l,