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

时间:2018-02-11 13:10:07

标签: vim editor buffer

我正在使用gVim 8.0的便携版本,每次我想使用ORA-01489命令或者如果我想要启动新的“文件”\会话(我不知道我应该如何坦率地称它)只是使用:enew退出程序我收到此错误消息:

  

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

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

谢谢!

1 个答案:

答案 0 :(得分:2)

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

:set autowrite
:set autowriteall

在当前会话中。在~/.vimrc中添加“set autowrite”和“set autowriteall”,以便在将来的会话中自动执行此操作。

如果您不想自动编写修改的缓冲区,只需切换到另一个缓冲区

:set hidden

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

如果autowrite不起作用,则可能意味着缓冲区没有名称(与文件无关) - 在这种情况下,vim无法写入缓冲区。 set hidden有助于:q,但不适用:qa!。 vim可以自动保存文件,但不能(也不应该)自动丢弃更改。您必须使用$query = User::find(); $query->joinWith(['profile']); $query->andWhere(['not', ['user.id' => $this->searching_user_id]]); $query->andWhere(new Expression('profile.photo::jsonb ? \'id\'')); 明确丢弃它们。这是安全功能。