【问题标题】:Quit vim, when a buffer has unsaved changes and is un-named?退出 vim,当缓冲区有未保存的更改并且未命名时?
【发布时间】:2015-08-11 07:06:22
【问题描述】:

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

当我输入命令时:

: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就好了。
  • 不幸的是没有。但如果它对你有用,希望我刚刚偶然发现了奇怪的 - 不太可能再次发生 - 案例。现在将尝试一些测试...
  • hmm,当我启动一个新的 vim 实例 :vnew ,进行一些编辑,我可以使用 :q! 退出。这可能是一些不寻常的情况?
  • aha,我能够通过:qa! 摆脱有问题的缓冲区
  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地点。

标签: vim editor


【解决方案1】:

当您修改隐藏缓冲区时会发生这种情况。无论如何都要使用: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 在不显示任何内容时出错,然后当我按 Enter 继续时,它正在恢复内容,我怀疑 vim 正在切换到另一个缓冲区?
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多