Vim - 在一个命令中保存并关闭缓冲区

Vim - 在一个命令中保存并关闭缓冲区

我在一个目录中有一堆文本文件,我知道我需要单独编辑每一个文件。

我从命令行开始:

vim *.txt

这会将文件作为单独的缓冲区在 Vim 中打开,然后让我查看第一个文件。我编辑它,然后使用 ':w' 保存它,并使用 ':bd' 关闭缓冲区并转到下一个。

我觉得这个用于保存和关闭缓冲区的 ':w:bd' 太长了,我怀疑还有更 Vim 忍者的方式来做到这一点。推荐的一次性保存和关闭您正在处理的缓冲区的方法是什么?

答案1

当在命令行上将文件传递给 Vim 时,它们不仅会在缓冲区中打开,还会填充参数列表。因此,您可以使用:next和等命令:first来浏览它们(以及:argdo用于批处理,这可能是一个巧妙的技巧)。我针对您的问题推荐的命令是:wnext(简称:wn),它:write会获取当前缓冲区,然后转到下一个:next缓冲区。

您不需要明确指定:bdelete缓冲区,尤其是当您从命令行启动带有一组文件的 Vim,然后在完成后退出时。(我能想到的唯一例外是卸载大型文件以节省系统内存,或重新使用单个 GVIM 实例进行许多不同的编辑。)

但是,如果你真的想要这个,只需定义一个自定义命令,例如

:command Wd write|bdelete

答案2

虽然我同意你不删除当前未使用的打开缓冲区,我喜欢删除它们,因为我有vim 航空公司的标签行已启用,它会始终在窗口顶部显示所有打开的缓冲区。我的 中有以下内容.vimrc

nnoremap qq :w\|bd<cr>

qq保存并关闭当前缓冲区,但也会干扰 vim 的“记录宏”功能(我同意)。

答案3

我使用abbreviation而不是command

cnorea wd w\|bd

因此,当我输入后按下空格键时,我可以看到它实际上在做什么:wd,或者如果我想要快点,我只需按下回车键,它仍然会进行转换。

相关内容