vim 可以在不退出的情况下关闭文件吗?

vim 可以在不退出的情况下关闭文件吗?

我在 中打开了一个文件vim,并且我已经完成了编辑。有没有办法让我关闭文件(或者缓冲)使vim屏幕空白?

答案1

那会是:bd:help :bd在 vim 8.2 中给出:

:[N]bd[elete][!]                        *:bd* *:bdel* *:bdelete* *E516*
:bd[elete][!] [N]
            Unload buffer [N] (default: current buffer) and delete it from
            the buffer list.  If the buffer was changed, this fails,
            unless when [!] is specified, in which case changes are lost.
            The file remains unaffected.  Any windows for this buffer are
            closed.  If buffer [N] is the current buffer, another buffer
            will be displayed instead.  This is the most recent entry in
            the jump list that points into a loaded buffer.
            Actually, the buffer isn't completely deleted, it is removed
            from the buffer list |unlisted-buffer| and option values,
            variables and mappings/abbreviations for the buffer are
            cleared. Examples:
                :.,$-bdelete    " delete buffers from the current one to
                                " last but one
                :%bdelete       " delete all buffers

答案2

让我添加更多想法并尝试解决一些术语问题。

  • Vim 并不经常直接操作文件。诸如:edit将文件读入缓冲区之类的命令。缓冲区和文件仅通过缓冲区的名称是文件的名称来共享连接;对基础文件的更改不会自动反映到缓冲区,反之亦然。像:write将缓冲区写入文件这样的命令 -任何缓冲区(当前缓冲区)到任何文件。默认值是缓冲区的名称,但可以覆盖。而且,有些缓冲区没有名称! (请参阅 参考资料 ,了解:help backup写入文件时可能发生的其他文件操作。)
  • 另一方面,Vim 通常维护一个交换文件。这有几个不同的目的,但其中一个目的是通过标记特定的 Vim 实例“拥有”该文件来警告同时编辑的情况。 (在您尝试编辑文件之前,只读view不需要关心交换文件。)

因此,至少有几种方法可以解释这个问题:

  1. 我如何告诉 Vim 我已经完成了一个文件,以便其他 Vim 可以编辑它?在这种情况下,您可能确实需要:bdelete,它会删除缓冲区并导致交换文件被删除。不过,您可能会考虑完全退出。如果启动时间很快,那么跳进跳出 Vim 比尝试维持长时间运行的会话更容易(尽管参见:help :mksession:help -S)。
  2. 如何使屏幕空白?您可能只需要:enew,这有点像在不带参数运行 Vim 时获得的缓冲区。

相关内容