我是VIM的新手.我使用:e和:w命令编辑和编写一个非常方便的文件.我不确定是否有"关闭"命令关闭当前文件而不离开VIM?
我知道该:q命令可用于关闭文件,但如果它是最后一个文件,VIM也会关闭; 实际上在Mac OS上,MacVIM确实退出了.只关闭了VIM窗口,我可以使用Control-N再次打开一个空白的VIM.我希望VIM保持空白屏幕.
Vin*_*vic 333
这会删除缓冲区(转换为关闭文件)
:bd
Run Code Online (Sandbox Code Playgroud)
seb*_*now 41
如前所述,您正在寻找: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
Run Code Online (Sandbox Code Playgroud)
您可能希望:bw完全删除它.
:bw 2
:b 2
E86: Buffer 2 does not exist
Run Code Online (Sandbox Code Playgroud)
不知道:bw给我打了很长时间.
Gow*_*wri 22
如果你的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
Run Code Online (Sandbox Code Playgroud)
eph*_*ent 17
:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516*
:bd[elete][!] [N]
Unload buffer [N] (default: current buffer) and delete it from
the buffer list. If the buffer was changed, this fails,
unless when [!] is specified, in which case changes are lost.
The file remains unaffected. Any windows for this buffer are
closed. If buffer [N] is the current buffer, another buffer
will be displayed instead. This is the most recent entry in
the jump list that points into a loaded buffer.
Actually, the buffer isn't completely deleted, it is removed
from the buffer list |unlisted-buffer| and option values,
variables and mappings/abbreviations for the buffer are
cleared.