我使用:e和:w命令来编辑和写入文件。我不确定是否有“close”命令关闭当前文件而不离开Vim?
我知道:q命令可以用来关闭一个文件,但如果它是最后一个文件,Vim也会被关闭;实际上在Mac OS上MacVim退出了。只有Vim窗口是关闭的,我可以使用Control-N再次打开一个空白的Vim窗口。我希望Vim保持空白屏幕的打开状态。
我使用:e和:w命令来编辑和写入文件。我不确定是否有“close”命令关闭当前文件而不离开Vim?
我知道:q命令可以用来关闭一个文件,但如果它是最后一个文件,Vim也会被关闭;实际上在Mac OS上MacVim退出了。只有Vim窗口是关闭的,我可以使用Control-N再次打开一个空白的Vim窗口。我希望Vim保持空白屏幕的打开状态。
当前回答
bufkill。vim插件添加了BD等,在不关闭任何分割的情况下删除缓冲区(就像BD一样)。
其他回答
这将删除缓冲区(转换为关闭文件)
:bd
如果你的Vim窗口中有多个分割窗口,那么:bd关闭当前文件的分割窗口,所以我喜欢使用一些更高级的东西:
map fc <Esc>:call CleanClose(1)
map fq <Esc>:call CleanClose(0)
function! CleanClose(tosave)
if (a:tosave == 1)
w!
endif
let todelbufNr = bufnr("%")
let newbufNr = bufnr("#")
if ((newbufNr != -1) && (newbufNr != todelbufNr) && buflisted(newbufNr))
exe "b".newbufNr
else
bnext
endif
if (bufnr("%") == todelbufNr)
new
endif
exe "bd".todelbufNr
endfunction
查看Butane插件以保持关闭缓冲区时的窗口布局。
如前所述,你正在寻找:bd,然而这并没有完全删除缓冲区,它仍然是可访问的:
:e foo
:e bar
:buffers
1 #h "foo" line 1
2 %a "bar" line 1
Press ENTER or type command to continue
:bd 2
:buffers
1 %a "foo" line 1
Press ENTER or type command to continue
:b 2
2 bar
相反,您可能需要:bw,这将完全删除它。
:bw 2
:b 2
E86: Buffer 2 does not exist
不知道:bw困扰了我一段时间。
如果你修改了一个文件,想要在不退出Vim和不保存的情况下关闭它,你应该输入:bd!