通过 Mac OSX 的 ssh 使用奇怪的 Vim/终端

通过 Mac OSX 的 ssh 使用奇怪的 Vim/终端

我正在使用 Mac OS X 10.10(Yosemite)的终端并通过 SSH 进入 Fedora 机器,但在终端上遇到了一些奇怪的问题:

  1. 当我:q从 vim 中退出时,vim 屏幕的内容仍然存在。当我:q在 Mac 上,甚至从 Fedora 机器上的实际桌面屏幕中,当我:q打开 vim 文件时,vim 屏幕消失,我返回到终端(即,我返回到命令提示符,其中上一行很简单,$vim <whatever_file_I_edited>.txt而现在,我看不到上一行,因为我仍然可以看到通过 vim 编辑的文件的内容。

  2. 当我使用触控板上的向上滚动/向下滚动功能时,它会将先前的条目滚动到终端,而不是终端窗口本身的长度。

我该如何解决这些问题?

答案1

xterm除了你对某种主义过于适应,并错误地认为它具有普遍性之外,你实际上没有什么“问题”。

xterm — 以及类似的 GUI 终端仿真器,如 gnome-terminal、lxterminal、konsole 等 — 实现了所谓的“备用屏幕缓冲区”。使用一个控制序列,程序可以将终端仿真器切换为显示和写入该缓冲区。使用另一个控制序列,它们可以切换回原始屏幕缓冲区。像vim(和less)这样的程序在启动/恢复时发出第一个控制序列,在关闭/暂停时发出第二个控制序列。这可以在终止时恢复先前的屏幕内容vim

这并不是理所当然的。

并非所有终端和终端仿真器都有备用屏幕缓冲区。操作系统内核中内置的终端仿真器没有。如果您vim在内核虚拟终端上运行,您会看到同样的行为。实际终端通常没有。(例如,实际的 DEC VT 系列终端具有一种涉及“页面”的机制,该机制并不相同,并且由一组不同的控制序列驱动。)

即使您的终端有,您也必须确保当前终端类型的 termcap/terminfo 条目具有适当的信息,告诉 TUI 程序(如nanoMidnight Commander)要发出哪些控制序列来显示和隐藏备用屏幕缓冲区。这需要选择(和设置)适当的TERM环境变量值,从 Fedora 的 termcap/terminfo 数据库中选择一个与您本地 MacOS 10 终端仿真器的功能相匹配的条目,甚至可能还要编辑该数据库。

您具体设置什么TERM并没有固定答案,因为这取决于您配置 MacOS 10 的终端程序提供的模拟。为此,您只需查看其设置即可。如果您告诉它以 256 色模式模拟 xterm,那么您必须选择xterm-256colorFedora 的 terminfo 数据库中描述的终端类型(很可能是)。

进一步阅读

答案2

由于某种原因,Mavericks 上的 Vim 没有配置配色方案。在我向 vimrc 文件添加几行(从网站复制粘贴)后,它开始像您描述的那样运行,在我的例子中,删除每个语句后的多余空格解决了这个问题。

相关内容