Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
退出vim后如何清除屏幕_Vim - Fatal编程技术网

退出vim后如何清除屏幕

退出vim后如何清除屏幕,vim,Vim,有时vim会在终端上留下一些东西,即按任意键继续,退出vim后是否有办法返回到清除终端? 我是vim的新手,请确切地告诉我应该做什么 对不起,我第一次表达的意思不够清楚。我实际上想问的是,在vim中键入:q之后,是否有一种方法可以返回到清除终端,而无需进一步输入命令。 我在Ubuntu中使用VIM 7.4,终端类型是xterm。是。你当然可以 使用UNIX命令清除屏幕。 clear有一种方法可以通过编辑.vimrc文件来完成更多工作 将此添加到您的.vimrc command Qc :call

有时vim会在终端上留下一些东西,即按任意键继续,退出vim后是否有办法返回到清除终端? 我是vim的新手,请确切地告诉我应该做什么


对不起,我第一次表达的意思不够清楚。我实际上想问的是,在vim中键入:q之后,是否有一种方法可以返回到清除终端,而无需进一步输入命令。
我在Ubuntu中使用VIM 7.4,终端类型是xterm。

是。你当然可以

使用UNIX命令清除屏幕。
clear

有一种方法可以通过编辑
.vimrc
文件来完成更多工作

将此添加到您的.vimrc

command Qc :call ClearAndExit()
function ClearAndExit()
    :!clear
    :q!
endfunction

使用
:Qc
退出。。。。如果Vim编译时支持切换xterm屏幕,它也会清除屏幕

,默认情况下,如果您设置
t_ti
t_te
(Vim通常会计算出需要自己设置的值)。血淋淋的细节在
:hxterm屏幕上解释(粘贴在下面)

(摘自Juergen Weigert撰写的《公司编辑》,回答一个问题)

:>另一个问题是,退出vim后,屏幕显示为 它:>是,即我正在查看(编辑)的文件的内容是 左上:>屏幕。我以前的like“ls”的输出是 丢失,:>即不再在滚动缓冲区中。我知道有一个 方法:>退出vim或其他类似vi后恢复屏幕 编辑:>我只是不知道怎么做。谢谢你的帮助。谢谢我 想象一下其他人可以回答这个问题。我想vim和vi do:对于给定的xterm设置,彼此的操作相同

他们不一定做同样的事情,因为这可能是一个termcap vs。 terminfo问题。您应该知道有两个数据库 用于描述特定类型端子的属性:termcap 和terminfo。当条目不同时,这可能会导致差异,并且 当一个程序使用terminfo,另一个程序使用terminfo时 termcap(另见+terminfo)

在您的特定问题中,您正在寻找控制序列 ^[[?47h和^[?47l。这些在XTERM备用和主之间切换 屏幕缓冲区。作为命令序列的快速解决方法,如 echo-n“^[?47h;vim…;echo-n”^[?47l”可以做你想做的事。(我的符号^[表示ESC字符,再往下你会看到 请查看数据库是否改为使用\E)

启动时,vim回显termcap变量ti的值(TERMFO: 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 h,内置xterm将包括提到的“te”和“ti” 条目

注2:如果您想禁用屏幕切换,而您没有 要更改termcap,可以将以下行添加到.vimrc中: :设置t_ti=t_te=


我使用别名清除任何退出方法,包括
:q
:wqa
(这是我的osx酿造二进制文件,使用
哪个vim
查找您自己的vim二进制文件)

添加到~/.vimrc:

au VimLeave * :!clear

我不想通过manoj使用不同的命令退出Vim(例如,
:Qc
as),而纠缠环的
.vimrc
对我不起作用

受柏拉图的启发,我通过在
.bashrc
中添加以下函数找到了类似的解决方案:

# Vim exits to clear terminal screen
function vim {
   /usr/bin/env vim "$@" && clear
}

在函数内部仅使用
vim
是有问题的,因为函数递归调用自身并创建无限循环,但是添加
/usr/bin/env
可以消除这个问题,忽略函数并在
路径中执行第一个
vim
,或者在shell提示符下键入Control-L。常见问题().对不起,我没有把我的想法表达得足够清楚。我实际上想问的是,在vim中键入:q后,有没有办法返回到一个清晰的终端,而不需要进一步输入命令。vim通常不应该这样做——但即使这样做,危害在哪里?请指定您使用的平台和终端。vim 7.4在Ubuntu上,终端类型这是我得到的信息。从我用
编辑了答案。vimrc
也改变了你尝试了哪一个?.vimrc还是改变了这个术语?如此简单,如此强大,但又如此不受重视:)这个解决方案有一定的效果,但不是很好使用它可以防止将参数传递给vim,并且除非定义了E3功能(并且标准Ubuntu上的bash中没有该功能),否则clear实际上不会清除回滚缓冲区。我同意,我也发现它缺乏,也没有找到一个我真正满意的解决方案。我100%受到了这个答案的启发,但为了回应这个答案的评论:在你的
.bashrc
函数vim{vim“$@”&&clear;}
这允许您将参数传递给
vim
,但也可以在
vim
以任何方式退出后清除终端屏幕。如果这不适用于
zsh
xterm
,我深表歉意!
# Vim exits to clear terminal screen
function vim {
   /usr/bin/env vim "$@" && clear
}