实际上那是 vim,而不是 vi(屏幕上的最后一行证明了这一点)。
考虑到大多数不需要的文本会留在备用屏幕中,您似乎正在使用终端描述,它为smcup
和rmcup
切换到备用屏幕提供空字符串。
当切换到备用屏幕时,部分功能会清除屏幕,并且 vim 不会自行清除屏幕(除非您按,例如,重新绘制屏幕)。controlL
由于人们经常建议编辑终端描述以删除这些功能,vim 可能会“按预期”处理,所以我预计会有一些不寻常的东西,比如空字符串,例如,
smcup=,rmcup=,
在 的输出中infocmp
。使用xterm
. _ _ 请参阅 xterm 常见问题解答为什么运行 vi 时屏幕不清晰?
在修订后的问题中,并没有真正推荐(或首选)TERM
使用xterm-color
which(请参阅常见问题解答What $TERM should I use? )。但是 vim 应该可以解决这个问题(它可以在我的机器上运行,从 OSX 上的 xterm #326 到 Debian 7)。但是,例如,在使用 vim 编辑 /bin/sh 并退出的快速检查中,它显示了一些(较小的)关于如何清除屏幕的混乱,留下一些碎片。xterm-xfree86
xterm-new
xterm-color 和 xterm-new 的区别在于,在后者中,vim(应该)看到它能够更轻松地清除屏幕。在前者中,它必须覆盖屏幕上的区域,如果它对屏幕上显示的内容感到困惑(例如区域设置与终端设置的差异),则会留下明显的碎片。
您可以xterm
通过(控制鼠标右键菜单) UTF-8 编码菜单条目上的复选标记来查看是否使用 UTF-8 编码。如果未设置,并且远程服务器上的语言环境使用 UTF-8,那么您可以获得有趣(且令人惊讶)的行为。只需键入
locale
在命令行上查看(通常与 UTF-8 编码相对应的语言环境变量以某种方式以它作为后缀命名)。