我在 中打开了一个文件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
不需要关心交换文件。)
因此,至少有几种方法可以解释这个问题:
- 我如何告诉 Vim 我已经完成了一个文件,以便其他 Vim 可以编辑它?在这种情况下,您可能确实需要
:bdelete
,它会删除缓冲区并导致交换文件被删除。不过,您可能会考虑完全退出。如果启动时间很快,那么跳进跳出 Vim 比尝试维持长时间运行的会话更容易(尽管参见:help :mksession
和:help -S
)。 - 如何使屏幕空白?您可能只需要
:enew
,这有点像在不带参数运行 Vim 时获得的缓冲区。