Terminal 什么';如果我经常在前景和背景之间切换mosh,终端设置是什么
我正在使用mosh访问我的远程Ubuntu机器。我在Windows上使用的客户端是MobaXterm,它有一个mosh插件。我在Ubuntu上使用的就是我从apt get获得的mosh客户端。 问题是我通常在bash中打开一个vim来编辑代码,然后使用Ctrl+Z返回bash,然后使用fg返回vim。但是,当我点击Ctrl+Z时,代码的内容仍然在终端窗口中,bash就在它下面。SSH工作得非常好。代码消失了,只有这样的东西出现了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
[1]+ Stopped vim .bashrc
我想这与我的终端设置有关。我使用Ubuntu的默认设置$术语返回xterm。我在MobaXterm中使用的终端也是xterm。
有人能告诉我如何获得与SSH连接相同的结果吗?屏幕被清除,只剩下一条短消息的行为听起来像是一个在xterm的正常屏幕和备用屏幕之间切换的程序。MobaXterm使用PuTTY,它从xterm实现了这个特性
TERM
的设置告诉termcap/terminfo/curses库要使用哪个终端描述。这就是区别所在:
- 对于mosh程序,该库位于本地计算机上
- 使用ssh时,该库位于远程计算机上
smcup
和rmcup
终端功能没有告诉“xterm”切换到备用屏幕或从备用屏幕切换
我手头没有要检查的,但你可以检查一下。mosh是一个诅咒/课程计划。因此,假设MobaXterm也有程序是合理的。
使用infocmp
程序,您可以查看其终端数据库中的这些值,例如
smcup=\E[?1049h,
rmcup=\E[?1049l,
或
后者是原始的xterm序列(1990年代早期),前者是现代的xterm序列(1990年代后期)。有趣的是,一些“xterm”模拟器没有实现较新的模拟器。有关详细信息,请参阅xterm常见问题解答
如果您有infocmp
,那么您可能会有。您可以通过以下方式修改本地终端数据库:
- 使用
创建包含终端描述的文件infocmp
- 编辑文件(为这两个值添加行,或者如果新值不起作用,则使用旧值)
- 使用
重新编译终端描述tic
- MobaXterm是自包含的(一个使用busybox的应用程序),所以我通常不会太注意它
- 它对xterm有一个比较老的终端描述(我可以精确地指出它,但很快,可能是5-8年前)
- 交替屏幕切换要老得多,正如您所指出的,没有多少事情要做,我没有进一步调查
- 如果有必要,您可能会从Linux复制一个已编译的terminfo条目(但这会造成麻烦)
对于Ubuntu,我快速查看了我的14.04机器,其中vim运行在gnome终端和xterm中。巧合的是,我最近查看了前者的终端描述,发现我为
gnome
(过时)或vte
(首选)编写的条目使用了旧的xtermsmcup
/rmcup
。Ubuntu14.04太旧了,gnome终端无法正确识别较新的xtermsmcup
,也无法使用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,