如果我经常在前景和背景之间切换mosh,终端设置是什么
What's the terminal setting if I often switch mosh between foreground and background
我正在使用 mosh 访问我的远程 Ubuntu 机器。我在 Windows 上使用的客户端是 MobaXterm,它有一个 mosh 插件。我在 Ubuntu 上使用的只是我从 apt-get 获得的 mosh 客户端。
问题是我通常在 bash 中打开一个 vim 来编辑我的代码,然后使用 Ctrl+Z 返回到 bash。我使用 fg 带回 vim。但是,当我按下 Ctrl+Z 时,我的代码内容仍然在我的终端 window 上,bash 在它下面。 SSH 完美运行。代码消失了,只有这样的东西出现了。
[1]+ Stopped vim .bashrc
我猜这与我的终端设置有关。我使用 Ubuntu 的默认设置。 $TERM returns xterm。我在 MobaXterm 中使用的终端也是 xterm。
谁能告诉我怎样才能得到与 SSH 连接相同的结果?
清除屏幕并且只保留一条短消息的行为听起来像是在 xterm 的正常屏幕和备用屏幕之间切换的程序。 MobaXterm 使用 PuTTY,它确实从 xterm 实现了这个特性。
TERM
的设置告诉 termcap/terminfo/curses 库使用哪个终端描述。这是不同之处:
- 对于 mosh 程序,该库位于您的本地计算机上。
- 使用 ssh 时,该库位于远程计算机上。
比这更复杂:vim实际上是在你所在的机器上使用终端数据库运行,但 mosh 对发送到的转义序列有最终决定权终点站。所以听起来好像 mosh 正在看到本地终端描述,其中 smcup
和 rmcup
terminfo 功能不会告诉 "xterm" 切换 to/from 备用屏幕。
我没有 MobaXterm at hand to check, but you can check this. mosh is a curses/ncurses program. So it is reasonable to suppose that MobaXterm also has the infocmp
程序。
使用 infocmp
程序,您可以查看其终端数据库对这些值有何看法,例如,
smcup=\E[?1049h,
rmcup=\E[?1049l,
或
smcup=\E[?47h,
rmcup=\E[2J\E[?47l,
后者是原始 xterm 序列(1990 年代初),前者是现代 xterm(1990 年代末)。有趣的是,一些 "xterm" 模拟器没有实现更新的模拟器。一些细节在 xterm FAQ Why doesn't the screen clear when running vi?
如果您有 infocmp
,那么您可能会有 tic
。您可以通过
修改本地终端数据库
- 使用
infocmp
创建包含终端描述的文件
- 编辑文件(为这两个添加行,或者如果新值不起作用则使用旧值)
- 使用
tic
重新编译终端描述
(如果 MobaXterm 提供的 mosh 没有 curses 实用程序,那么除了使用 MobaXterm 提交错误报告外,您无能为力)。
以上是6月8日写的,昨晚看了下MobaXterm,提几点意见:
- MobaXterm 是独立的(使用 busybox 的应用程序),所以我通常不会太关注它。
- 它有一个适度旧的 xterm 终端描述(我可以查明它,但副手,可能有 5-8 岁)。
- 备用屏幕切换要老得多,正如您所说的没有太多可做的,我没有进一步调查。
- 如果有必要,您很可能可以从 Linux 复制已编译的 terminfo 条目(但这会很麻烦)。
对于 Ubuntu,我在 gnome-terminal 和 xterm 中使用 vim 运行 快速查看了我的 14.04 机器。巧合的是,我最近正在查看前者的终端描述,并注意到我为 gnome
(已过时)或 vte
(首选)编写的条目使用了旧的 xterm smcup
/ rmcup
. Ubuntu 14.04 太旧以至于 gnome-terminal 无法正确识别较新的 xterm smcup
,并且没有使用 TERM=xterm
切换到备用屏幕。但它确实适用于 TERM=vte
(或 TERM=gnome
)。如果安装了 ncurses-term
软件包,您将获得这些描述。
我正在使用 mosh 访问我的远程 Ubuntu 机器。我在 Windows 上使用的客户端是 MobaXterm,它有一个 mosh 插件。我在 Ubuntu 上使用的只是我从 apt-get 获得的 mosh 客户端。 问题是我通常在 bash 中打开一个 vim 来编辑我的代码,然后使用 Ctrl+Z 返回到 bash。我使用 fg 带回 vim。但是,当我按下 Ctrl+Z 时,我的代码内容仍然在我的终端 window 上,bash 在它下面。 SSH 完美运行。代码消失了,只有这样的东西出现了。
[1]+ Stopped vim .bashrc
我猜这与我的终端设置有关。我使用 Ubuntu 的默认设置。 $TERM returns xterm。我在 MobaXterm 中使用的终端也是 xterm。 谁能告诉我怎样才能得到与 SSH 连接相同的结果?
清除屏幕并且只保留一条短消息的行为听起来像是在 xterm 的正常屏幕和备用屏幕之间切换的程序。 MobaXterm 使用 PuTTY,它确实从 xterm 实现了这个特性。
TERM
的设置告诉 termcap/terminfo/curses 库使用哪个终端描述。这是不同之处:
- 对于 mosh 程序,该库位于您的本地计算机上。
- 使用 ssh 时,该库位于远程计算机上。
比这更复杂:vim实际上是在你所在的机器上使用终端数据库运行,但 mosh 对发送到的转义序列有最终决定权终点站。所以听起来好像 mosh 正在看到本地终端描述,其中 smcup
和 rmcup
terminfo 功能不会告诉 "xterm" 切换 to/from 备用屏幕。
我没有 MobaXterm at hand to check, but you can check this. mosh is a curses/ncurses program. So it is reasonable to suppose that MobaXterm also has the infocmp
程序。
使用 infocmp
程序,您可以查看其终端数据库对这些值有何看法,例如,
smcup=\E[?1049h,
rmcup=\E[?1049l,
或
smcup=\E[?47h,
rmcup=\E[2J\E[?47l,
后者是原始 xterm 序列(1990 年代初),前者是现代 xterm(1990 年代末)。有趣的是,一些 "xterm" 模拟器没有实现更新的模拟器。一些细节在 xterm FAQ Why doesn't the screen clear when running vi?
如果您有 infocmp
,那么您可能会有 tic
。您可以通过
- 使用
infocmp
创建包含终端描述的文件 - 编辑文件(为这两个添加行,或者如果新值不起作用则使用旧值)
- 使用
tic
重新编译终端描述
(如果 MobaXterm 提供的 mosh 没有 curses 实用程序,那么除了使用 MobaXterm 提交错误报告外,您无能为力)。
以上是6月8日写的,昨晚看了下MobaXterm,提几点意见:
- MobaXterm 是独立的(使用 busybox 的应用程序),所以我通常不会太关注它。
- 它有一个适度旧的 xterm 终端描述(我可以查明它,但副手,可能有 5-8 岁)。
- 备用屏幕切换要老得多,正如您所说的没有太多可做的,我没有进一步调查。
- 如果有必要,您很可能可以从 Linux 复制已编译的 terminfo 条目(但这会很麻烦)。
对于 Ubuntu,我在 gnome-terminal 和 xterm 中使用 vim 运行 快速查看了我的 14.04 机器。巧合的是,我最近正在查看前者的终端描述,并注意到我为 gnome
(已过时)或 vte
(首选)编写的条目使用了旧的 xterm smcup
/ rmcup
. Ubuntu 14.04 太旧以至于 gnome-terminal 无法正确识别较新的 xterm smcup
,并且没有使用 TERM=xterm
切换到备用屏幕。但它确实适用于 TERM=vte
(或 TERM=gnome
)。如果安装了 ncurses-term
软件包,您将获得这些描述。