我在一个目录中有一堆文本文件,我知道我需要单独编辑每一个文件。
我从命令行开始:
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
,或者如果我想要快点,我只需按下回车键,它仍然会进行转换。