当一个缓冲区有未保存的更改且未命名时,如何退出vim?

13

我使用 :vnew 在vim中创建了一个空的“草稿缓冲区”(即不与特定文件关联)。然后我尝试编辑一些文本,现在我只想退出编辑器 - 不保留这个“草稿缓冲区”的内容。

当我输入以下命令时:

:q!

Vim 给我:

[No Name][+]                                               
E37: No write since last change (add ! to  override)  
E162: No write since last change for buffer "[No Name]"  
Press ENTER or type command to continue

我该如何从这种状态下退出vim?


你能提供完整的重现步骤吗?我已经尝试过了,我可以正常使用:q - poke
很遗憾不可以,但如果这个方法对你有效,那么我希望我只是碰巧遇到了一个奇怪且不太可能再次发生的情况。我现在会尝试一些测试... - the_velour_fog
嗯,当我启动一个新的vim实例,使用:vnew命令进行一些编辑后,我可以使用:q!顺利退出。这可能是一个不寻常的情况吗? - the_velour_fog
2
啊哈,我用:qa!成功地退出了有问题的缓冲区。 - the_velour_fog
Stack Overflow是一个编程和开发问题的网站。此问题似乎与编程或开发无关,因此不属于该网站的主题范围。请参阅帮助中心中的“我可以在这里问什么话题”页面。也许[超级用户]或[Unix&Linux Stack Exchange]更适合询问。 - jww
2个回答

23

当您拥有修改过的隐藏缓冲区时,会发生这种情况。使用:qa!强制退出。

来自:h :quit:

:q[uit]!        Quit without writing, also when currently visible
                buffers have changes.  Does not exit when this is the
                last window and there is a changed hidden buffer.
                In this case, the first changed hidden buffer becomes
                the current buffer.
                Use ":qall!" to exit always.

如果有人想要复制它:

  • 启动vim并修改无名缓冲区
  • 编辑另一个文件(您可能需要:set hidden),例如::e README
  • 尝试使用:q!退出


谢谢,是的,我相信我可能有第二个未隐藏但为空的“临时缓冲区”打开,因为vim在不显示任何内容的情况下出现错误,然后当我按回车键继续时,它会恢复内容,我怀疑vim正在切换到另一个缓冲区? - the_velour_fog

7

最好的情况下,你可以称之为“瞬态”缓冲区(在内存中但不与特定文件相关),但你使用:vnew创建的不是“临时”缓冲区。

在Vim中,“临时”缓冲区是一个普通的缓冲区,在其中设置了一堆本地选项。可以通过以下命令完成:

:vnew | setlocal nobuflisted buftype=nofile bufhidden=wipe noswapfile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接