closures文件而不退出VIM应用程序?
我是VIM的新手。 我使用:e
和:w
命令来编辑和写入非常方便的文件。 我不确定是否有“close”命令closures当前文件而不离开VIM?
我知道:q
命令可以用来closures一个文件,但是如果它是最后一个文件,VIM也是closures的; 其实在Mac OS MacVIM退出。 只有VIM窗口closures,我可以使用Control-N再次打开空白的VIM。 我希望VIM保持空白屏幕打开状态。
这将删除缓冲区(转换为closures文件)
:bd
如上所述,您正在寻找: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窗口中有多个分割窗口,则:bdclosures当前文件的分割窗口…所以我喜欢使用更高级的东西:
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
:[N] bd [elete] [!] *:bd * *:bdel * *:bdelete * * E516 * :bd [elete] [!] [N] 卸载缓冲区[N](默认:当前缓冲区)并从中删除 缓冲区列表。 如果缓冲区被改变,则失败, 除非指定了[!],在这种情况下,更改将会丢失。 该文件保持不受影响。 任何窗口这个缓冲区是 closures。 如果缓冲区[N]是当前缓冲区,则为另一个缓冲区 将被显示。 这是最近的一个入口 指向加载的缓冲区的跳转列表。 实际上,缓冲区并没有完全删除,它被删除了 从缓冲列表中列出| unlisted-buffer | 和选项值, variables和缓冲区的映射/缩写是 清除。
如果你已经保存了最后一个文件,那么:enew是你的朋友(:如果你不想保存最后一个文件,那就是enew!)。 请注意,原始文件仍然在您的缓冲区列表中(可通过ls访问)。
如果您修改了一个文件,并且希望在不退出VIM的情况下closures它并且不保存,则应该input:bd!
:bd可以被映射。 我把它映射到F4,如果我需要强制closures,shift-F4,因为我不再需要一些改变。
有一个插件:bufkill(见http://www.vim.org/scripts/script.php?script_id=1147 )
这增加了BD
等删除缓冲区没有closures任何拆分(如bd
)将单独。
看看丁烷插件closures缓冲区时保持窗口布局。
我已经将bd映射到F4,并在.vimrc文件中插入以下内容,并按F4键将closures当前文件。
:map <F4> :bd<CR>
我有同样的问题,所以我做了插件。 这个插件replace:q和其他命令,然后阻止窗口closures。
如果你仍然有问题,请尝试使用下面的插件。 https://github.com/taka-vagyok/prevent-win-closed.vim