我是VIM的新手。我使用:e
和:w
命令编辑和编写非常方便的文件。我不确定是否有“关闭”命令关闭当前文件而不离开VIM?
我知道:q
命令可用于关闭文件,但如果它是最后一个文件,VIM也会关闭;实际上在Mac OS上,MacVIM确实退出了。只关闭了VIM窗口,我可以使用Control-N再次打开一个空白的VIM。我希望VIM保持空白屏幕。
答案 0 :(得分:326)
这会删除缓冲区(转换为关闭文件)
:bd
答案 1 :(得分:40)
正如已经提到的,你正在寻找: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 在一段时间内困扰我。
答案 2 :(得分:21)
如果你的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
答案 3 :(得分: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.
答案 4 :(得分:9)
如果您已经保存了最后一个文件,则:enew是您的朋友(:enew!如果您不想保存最后一个文件)。请注意,原始文件仍将位于缓冲区列表中(可通过以下方式访问:ls)。
答案 5 :(得分:6)
如果您修改某个文件并希望关闭它而不退出VIM且未保存,则应键入:bd!
答案 6 :(得分:3)
:可以映射bd。我将它映射到F4,如果因为我不再需要的某些改变而需要强制关闭,则将它转换为F4。
答案 7 :(得分:2)
有一个插件:bufkill(见http://www.vim.org/scripts/script.php?script_id=1147)
这会添加BD
等删除缓冲区,而不会关闭任何拆分(如bd
)。
答案 8 :(得分:1)
我已将bd映射到F4 在.vimrc文件中插入以下内容,按F4键,它将关闭当前文件。
:map <F4> :bd<CR>
答案 9 :(得分:0)
查看Butane插件,以便在关闭缓冲区时保持窗口布局。
答案 10 :(得分:-1)
我有同样的问题,所以我制作了插件。 此插件替换:q和其他命令,然后阻止窗口关闭。
如果您还有问题,请尝试使用以下插件。 https://github.com/taka-vagyok/prevent-win-closed.vim