什么是“修改的隐藏缓冲区”?我可以禁用这个东西吗?

Ahu*_*Lee 2 vim buffer editor

我正在使用 gVim 8.0 的便携式版本,每次我想使用命令启动一个新的“文件”\会话(我不知道应该如何坦白地称呼它),:enew或者如果我想简单地使用:q (:quit)我得到的退出程序这个错误消息:

E37:自上次更改以来没有写入(添加!以覆盖)。

我在这里读到,当您修改了隐藏缓冲区时,就会发生这种情况。我不知道那个缓冲区是什么,但我不喜欢这种默认行为。我可以以某种方式更改它,这样我就不会每次需要退出或重新开始时都输入问号吗?

谢谢你!

phd*_*phd 5

设置选项autowriteautowriteall。它们允许在每个 :next, :rewind, :last, :first, :previous, :stop, :suspend, :tag, :!, :make, CTRL- 上写入文件内容(如果已修改) ] 和 CTRL-^;autowriteall也用于命令 ":edit"、":enew"、":quit"、":qall"、":exit"、":xit"、":recover" 和关闭 Vim 窗口。

\n\n
:set autowrite\n:set autowriteall\n
Run Code Online (Sandbox Code Playgroud)\n\n

在本届会议上。将“set autowrite”和“set autowriteall”放入~/.vimrc,以便在将来的会话中自动执行此操作。

\n\n

如果您不想自动写入修改后的缓冲区而只是切换到另一个缓冲区

\n\n
:set hidden\n
Run Code Online (Sandbox Code Playgroud)\n\n

(同样,在命令行和~/.vimrc)。

\n\n

如果autowrite不起作用,可能意味着缓冲区没有名称(不与文件关联)\xe2\x80\x94,在这种情况下,vim 无法写入缓冲区。set hidden在这里有帮助,但不适合:q。vim 可以自动保存文件,但不能(也不应该)自动放弃更改。您必须使用 显式丢弃它们:qa!。这是安全功能。

\n