答案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
进入/退出光标寻址模式的功能,这就是仅有的您将从此类终端上的任何全屏程序中获得的行为。