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

the*_*fog 9 vim editor

我使用在vim中创建了一个空白的"临时缓冲区"(即与特定文件无关):vnew.然后我玩了一些文本,现在我只想退出编辑器 - 不保留这个"临时缓冲区"的内容.

当我输入命令时:

:q!
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我怎样才能从这个状态退出vim?

Mar*_*rth 16

当您有修改的隐藏缓冲区时会发生这种情况.: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.
Run Code Online (Sandbox Code Playgroud)

如果有人想要重现它:

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


rom*_*inl 5

充其量您可以将其称为“临时”缓冲区(在内存中,但不与特定文件关联),但是创建时使用:vnew不是 “临时”缓冲区。

在Vim中,“暂存”缓冲区是一个普通的缓冲区,您可以在其中设置许多本地选项。可以使用以下命令来完成:

:vnew | setlocal nobuflisted buftype=nofile bufhidden=wipe noswapfile
Run Code Online (Sandbox Code Playgroud)