有时vim会在终端上留下一些东西,即按任意键继续,退出vim后有什么方法可以返回到清晰的终端吗? 我是 vim 新手,请准确告诉我应该做什么。
抱歉我第一次没有表达清楚我的想法。我其实想问的是,有没有一种方法可以在 vim 中输入 :q 后返回到清晰的终端,而无需进一步输入命令。 我在 Ubuntu 中使用 VIM 7.4,终端类型是 xterm。
添加到你的~/.vimrc:
au VimLeave * :!clear
我使用别名来清除任何退出方法,包括
:q
、:wqa
。 (这是我的 osx 编译的二进制文件,使用 which vim
找到你自己的 vim 二进制文件)
# .zshrc
alias vim="/usr/local/Cellar/vim/8.0.0094/bin/vim && clear"
有一种方法可以通过编辑您的
.vimrc
文件来完成更多事情
将其添加到您的 .vimrc
command Qc :call ClearAndExit()
function ClearAndExit()
:!clear
:q!
endfunction
使用
:Qc
退出....它也会清除屏幕
如果 Vim 编译时支持切换 xterm 屏幕,那么如果您设置
t_ti
和 t_te
(Vim 通常会计算出需要自行设置的值),那么默认情况下它可以执行此操作。血淋淋的细节在:h xterm-screens
(粘贴在下面)有解释
(来自 comp.editors,作者 Juergen Weigert,回答问题)
:> 另一个问题是,退出vim后,屏幕仍为 它:>是,即我正在查看(编辑)的文件的内容是 留在 :> 屏幕上。我之前的输出如“ls”是 丢失了,:>即。不再在滚动缓冲区中。我知道有一个 方法 :> 退出 vim 或其他 vi 之类后恢复屏幕 编辑,:>我只是不知道怎么做。感谢帮助。谢谢。 : :我 想象一下其他人可以回答这个问题。我认为 vim 和 vi 做:对于给定的 xterm 设置,彼此做同样的事情。
他们不一定做同样的事情,因为这可能是 termcap 与 termcap 的比较。 术语信息问题。您应该知道有两个数据库 用于描述特定类型终端的属性:termcap 和术语信息。当条目不同并且 相关程序何时一个使用 terminfo 而另一个使用 termcap(另请参阅+terminfo)。
在您的特定问题中,您正在寻找控制序列 ^[[?47h 和 ^[[?47l。这些在 xterms 备用和主之间切换 屏幕缓冲区。作为一种快速解决方法,命令序列如下 回声-n“^[[?47h”;维姆...; echo -n "^[[?47l" 可能会做你想做的事。 (我的符号 ^[ 表示 ESC 字符,再往下你会 看到数据库使用 \E 代替)。
启动时,vim 回显 termcap 变量 ti 的值(terminfo: smcup)到终端。退出时,会回显 te (terminfo: rmcup)。 因此,这两个变量是上述内容的正确位置 提到的控制序列应该消失。
将您的 xterm termcap 条目(在 /etc/termcap 中找到)与您的进行比较 xterm terminfo 条目(使用“infocmp -C xterm”检索)。两者都应该 包含类似于以下内容的条目: :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:
PS:如果您发现任何差异,有人(您的系统管理员?)应该更好 查看 完整的 termcap 和 terminfo 数据库以确保一致性。
注 1:如果您使用中定义的 FEAT_XTERM_SAVE 重新编译 Vim feature.h,内置 xterm 将包含提到的“te”和“ti” 条目。
注2:如果您想禁用屏幕切换,并且您没有 想要更改你的 termcap,你可以将这些行添加到你的 .vimrc 中: :设置 t_ti= t_te=
是的。你当然可以。
使用 UNIX 命令清除屏幕。
clear