有时候vim会在终端上留下一些东西,即按任意键继续,退出vim后有没有办法返回清除终端? 我是vim的新手,请告诉我我应该做些什么。
对不起,我第一次没有表达我的想法。我真正想要问的是,在输入之后有没有办法返回到一个清除终端:q在vim中没有进一步输入命令。 我在Ubuntu中使用VIM 7.4,终端类型是xterm。
答案 0 :(得分:2)
有一种方法可以通过编辑.vimrc
文件
将此添加到.vimrc
command Qc :call ClearAndExit()
function ClearAndExit()
:!clear
:q!
endfunction
使用:Qc
退出....它也会清除屏幕
答案 1 :(得分:1)
如果Vim编译时支持切换xterm-screens,默认情况下可以这样做,如果你设置t_ti
和t_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
中。