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


25

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

我从表扬一行开始

vim *.txt

它在vim中将文件作为单独的缓冲区打开,而让我看第一个文件。我对其进行编辑-然后使用':w'保存它,并使用':bd'关闭缓冲区并移至下一个缓冲区。

这个':w:bd'保存和关闭缓冲区的感觉对我来说很长,我怀疑还有一种更多的vim ninja方式-建议一次使用什么方法保存和关闭正在处理的缓冲区?


我建议的方法是,:next一旦完成任务,就移至缓冲区并写入/关闭所有内容:wqa。这个假设你有:set hidden你的~/.vimrc
romainl 2013年

Answers:


22

当通过命令行将文件传递给Vim时,它们不仅在缓冲区中打开,而且填充参数列表。因此,您可以使用像:next:first这样的命令来浏览它们(并:argdo进行批处理,这可能是一个很巧妙的技巧)。我为您的问题推荐的命令是:wnext(简称:wn),它:write是当前缓冲区,然后转到:next

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

但是,如果您确实要这样做,则只需定义一个自定义命令即可,例如

:command Wd write|bdelete

5
您已经提到了两种实现OP要求的方法,但是第二种方法并不明显::w|bd
Jonno

->这具有适合OP使用的方法的优点,尽管我认为:next在某些情况下更有意义。
Jonno

4

虽然我同意,你不要删除您目前没有使用打开的缓冲区,我喜欢将其删除,因为我有VIM航空公司启用的耳线,在的顶部,显示所有打开的缓冲区所有的时间窗口。我的内容如下.vimrc

nnoremap qq :w\|bd<cr>

qq 保存并关闭当前缓冲区,但也使vim的“记录宏”功能混乱(我可以接受)。


2
ZZ想到了内置函数,但这最终会完全保存并退出Vim,而不仅仅是删除缓冲区。zz对于那些发现宏比将视图居中于当前光标行更有价值的人,小写字母可能是一个有趣的替代映射。
8bittree '16

1
Q在意识到Vim中录制的价值之后,我最近将其更改为。
apostl3pol
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.