它不会产生空行。

它不会产生空行。

每次当我在新终端中启动 vim 或在启动 vim 之前使用clear命令时,它都会在终端中产生空行。如何解决这个问题?

在此输入图像描述

我的任期定为xterm-256color。我清除了我的.vimrc,因为我认为这是问题所在,但这没有帮助。我使用的是 terminator 1.91,但我也尝试过默认的 gnome 终端。 vim 8.0,我的系统是 Manjaro Linux。

答案1

它不会产生空行。

它将光标移动到屏幕的左下角,这是当您发出:q或等命令时恰好发送的位置ZZ,通常是因为您刚刚输入ex命令或因为它已更新状态行。

它这样做只是因为您的终端描述中的terminfo任何一个都不包含进入和退出的功能光标寻址方式根本没有,或者包括进入/退出光标寻址模式功能,该功能不使用命令保存/恢复光标位置的 DECSM/DECRM 专用模式序列此外命令切换到备用屏幕缓冲区或从备用屏幕缓冲区切换,并且也没有通过包含 DECSC/DECRC 来明确弥补该缺陷。 (DEC 专用模式 1047 和 47 仅命令切换到备用屏幕缓冲区或从备用屏幕缓冲区切换。DEC 专用模式 1049 还命令保存/恢复光标位置。)

通常,退出后立即vim,就像其他呈现全屏文本用户界面, 退出光标寻址模式。因为这会恢复光标位置进入光标寻址模式,当vim此类程序首先启动其全屏文本用户界面时,光标会从左下角移动到程序启动时的位置。

反过来,这种terminfo功能的缺乏很可能是因为您没有为您的终端/终端模拟器使用正确的描述。最常见的错误是滥用xterm,就像你正在做的那样。除非你的终端模拟器确实是XTerm程序,该终端类型对于您的终端来说是错误的。使用iTerm.App,vte-256color,tmux-256color,putty-256color,nsterm,terminator,等等,视情况而定。

请注意,Linux、OpenBSD、NetBSD 和 FreeBSD 内核本身内置的终端仿真器由linux-16color,pccon, 和 pcvt25终端类型,没有替代的屏幕缓冲区机制,因此没有terminfo进入/退出光标寻址模式的功能,这就是仅有的您将从此类终端上的任何全屏程序中获得的行为。

进一步阅读

相关内容