以编程方式执行命令以关闭当前缓冲区并切换到上一个状态

时间:2012-11-27 06:37:17

标签: vim

我正在编辑文件:e foo

现在我想保存它,关闭缓冲区(所以我可以在打开foo之前返回状态),使用command

我现在有这个:

command! GC silent execute ":wq" | silent execute ":close"

但如果我之前没有打开任何缓冲区,我会收到此错误:

E444: Cannot close last window

如何关闭窗口,如果它是最后一个窗口,它仍会关闭它,然后将我返回到您运行vim时获得的空白屏幕?

3 个答案:

答案 0 :(得分:4)

我认为您正在寻找:update + :bdelete命令组合。如果存在更改,则第一个持续更改,后者删除缓冲区。如果有其他拆分窗口,则关闭当前窗口。否则,如果您有其他参数/​​隐藏缓冲区,则下一个参数将显示在单个窗口中。如果没有其他窗口,则显示空缓冲区(如:enew)。

答案 1 :(得分:0)

当你没有文件作为参数$ vim启动Vim时,你看到的只是一个空缓冲区。如果它的状态没有以任何方式改变,那么当你执行:e file时它就会被丢弃。

您可以使用:ls查看:唯一可用的缓冲区为file

如果你想要一个空的缓冲区(我不知道为什么你会想要那个),你需要明确创建一个:

:enew

除非有一个我不知道的选项。

无论如何,我建议你这样做:

$ vim file

而不是:

$ vim
:e file

答案 2 :(得分:0)

你想save all files, and exit vim吗?然后输入ZZ。 或者你想做save all files if updated, and close all windows?然后

command! GC bufdo update | windo bw