退出vim后如何清除屏幕

时间:2015-07-23 18:31:50

标签: vim

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

对不起,我第一次没有表达我的想法。我真正想要问的是,在输入之后有没有办法返回到一个清除终端:q在vim中没有进一步输入命令。 我在Ubuntu中使用VIM 7.4,终端类型是xterm。

6 个答案:

答案 0 :(得分:2)

有一种方法可以通过编辑.vimrc文件

来完成更多工作

将此添加到.vimrc

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

使用:Qc退出....它也会清除屏幕

答案 1 :(得分:1)

如果Vim编译时支持切换xterm-screens,默认情况下可以这样做,如果你设置t_tit_te(Vim通常会计算出来,这需要是什么值)由他自己设定)。血腥细节在:h xterm-screens(粘贴在下面)

中解释
  

(来自编辑,Juergen Weigert,回答问题)

     

产品:>另一个问题是,在退出vim后,屏幕保持为   它:>是的,即我正在查看(编辑)的文件的内容是   留下:>屏幕。我以前喜欢的输出" ls"是   丢失,:>即。不再在滚动缓冲区中。我知道有一个   方式:>退出vim或其他vi之后恢复屏幕   编辑,:>我只是不知道如何。帮助表示赞赏。谢谢。 : :一世   想象别人可以回答这个问题。我假设虽然vim和vi   do:对于给定的xterm设置,它们彼此相同。

     

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

     

在您的特定问题中,您正在寻找控制序列   ^ [[?47h和^ [[?47l。这些在xterms alternate和main之间切换   屏幕缓冲区。作为快速解决方法的命令序列,如           echo -n" ^ [[?47h&#34 ;; vim ......; echo -n" ^ [[?47l"可以做你想做的事。 (我的符号^ [表示ESC字符,进一步向下你' ll   看到数据库使用\ E代替。)

     

启动时,vim回应termcap变量ti的值(terminfo:   smcup)到终端。当退出时,它回应te(terminfo:rmcup)。   因此这两个变量是上述的正确位置   提到的控制序列应该去。

     

将您的xterm termcap条目(在/ etc / termcap中找到)与您的   xterm terminfo条目(使用" infocmp -C xterm"检索)。两者都应该   包含类似于的条目:           :TE = \ E [2J \ E [47升\ E8:TI = \ E7 \ E [47H:

     

PS:如果你发现有什么不同,有人(你的系统管理员?)应该更好   校验       完整的termcap和terminfo数据库是为了保持一致。

     

注意1:如果使用定义的FEAT_XTERM_SAVE重新编译Vim   feature.h,内置的xterm将包括提到的" te"和" ti"   条目。

     

注意2:如果要禁用屏幕切换,则不要   想要更改termcap,可以将这些行添加到.vimrc中:           :set t_ti = t_te =

答案 2 :(得分:0)

是。你当然可以。

使用UNIX命令清除屏幕。     clear

答案 3 :(得分:0)

我使用别名清除任何退出方法,包括:q:wqa。 (这是我的osx brewed二进制文件,找到你自己的vim二进制文件which vim

# .zshrc
alias vim="/usr/local/Cellar/vim/8.0.0094/bin/vim && clear"

答案 4 :(得分:0)

添加到您的〜/ .vimrc:

Public Sub CommandButton1_Click()
    On Error GoTo ErrorHandler

Dim wApp As Word.Application
Dim wDoc As Word.Document

Set wApp = CreateObject("Word.Application.8")
wApp.Visible = True
Const strPath1 As String = "D:\Template.docx"
Set wDoc = wApp.Documents.Add(Template:=strPath1, NewTemplate:=False, DocumentType:=0)

Dim currentcell as variant
Dim result as string

For each currentcell in Worksheets("Sheet2").Range(ActiveCell, ActiveCell.End(xlDown))

    Result =result & currentcell.value & vbcrlf

Next currentcell

With wDoc.Paragraphs(wDoc.Paragraphs.Count).Range
         .Text= result
End With

ErrorHandler:
        Resume Next
End Sub

答案 5 :(得分:0)

我不想通过 manoj 使用不同的命令来退出 Vim(例如 :Qc 作为 suggested),而 EntangledLoops 的 .vimrc method 没有不适合我。

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

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

在函数内部仅使用 vim 是有问题的,因为该函数会递归调用自身并创建无限循环,但添加 /usr/bin/env 可消除此问题,忽略该函数并执行第一个 {{1} } 在 vim 中。