0

我正在尝试使用 Mac 计算机在远程服务器上使用 Xquartz 访问 vi 编辑器。远程服务器使用 Linux

我面临的问题是,如果我尝试打开文件,以前的文件/命令历史记录开始弄乱显示。需要明确的是,它并没有弄乱文件的内容——而只是弄乱了显示。我在下面附上一张快照

在此处输入图像描述

该文件实际上只包含那些黑色的东西。蓝色的 @/C^ 等来自先前打开(然后关闭)的文件,红色的其他文件也来自命令历史记录。

在浏览了之前的一些帖子后,有人建议使用重置命令 shopt | grep 检查大小。我试过shopt | grep checkwinsize 并且它显示 checkwinsize。现在我别无选择。如果您需要更多详细信息,请告诉我

编辑: echo $TERM : xterm-color

在此处输入图像描述

4

2 回答 2

0

实际上那是 vim,而不是 vi(屏幕上的最后一行证明了这一点)。

考虑到大多数不需要的文本会留在备用屏幕中,您似乎正在使用终端描述,它为smcuprmcup切换到备用屏幕提供空字符串。

当切换备用屏幕时,部分功能会清除屏幕,并且 vim 不会自行清除屏幕(除非您按,例如,重新绘制屏幕)。controlL

由于人们经常建议编辑终端描述以删除这些功能,vim 可能会“按预期”处理,所以我预计会有一些不寻常的东西,比如空字符串,例如,

smcup=,rmcup=,

在 的输出中infocmp使用xterm. _ _ 请参阅 xterm 常见问题解答为什么运行 vi 时屏幕不清晰?

在修订后的问题中,并没有真正推荐(或首选)TERM使用xterm-colorwhich(请参阅常见问题解答What $TERM should I use? )。但是 vim 应该可以解决这个问题(它可以在我的机器上运行,从 OSX 上的 xterm #326 到 Debian 7)。但是,例如,在使用 vim 编辑 /bin/sh 并退出的快速检查中,它显示了一些(较小的)关于如何清除屏幕的混乱,留下一些碎片。xterm-xfree86xterm-new

xterm-color 和 xterm-new 的区别在于,在后者中,vim(应该)看到它能够更轻松地清除屏幕。在前者中,它必须覆盖屏幕上的区域,如果它对屏幕上显示的内容感到困惑(例如区域设置与终端设置的差异),则会留下明显的碎片。

您可以xterm通过(控制鼠标右键菜单) UTF-8 编码菜单条目上的复选标记来查看是否使用 UTF-8 编码。如果未设置,并且远程服务器上的语言环境使用 UTF-8,那么您可以获得有趣(且令人惊讶)的行为。只需键入

locale

在命令行上查看(通常与 UTF-8 编码相对应的语言环境变量以某种方式以它作为后缀命名)。

于 2017-10-24T23:43:13.573 回答
0

尝试在 xterm 中按 [CTRL] 右键(字体菜单)。如果未选择 UTF-8 编码,请尝试这样做。

如果可行,则在您的 ~/.Xdefaults 中添加:

XTerm.vt100.locale: true
于 2022-02-28T21:33:28.943 回答