从vim中是否有一种方法可以同时打开多个文件?

51

从命令行启动 vim 时,我可以通过 vim *.txt 打开目录中的所有文本文件。

但是,在 vim 内部尝试相同的操作(:e *.txt)会出现错误:E77:文件名过多

为什么 vim 拒绝同时打开多个文件?有没有办法改变这种情况?


我在处理多个文件时使用缓冲区,不需要关注选项卡或者分割。抱歉,在问题中应该提到这一点。 - static_rtti
4个回答

77

这应该可以工作:

:next *.txt

完成了!当我发表评论时,我还没有做到。 - static_rtti
3
如果您想在当前目录中包含所有子目录中的文件,可以使用:n **/*.txt - Bryce Guinta
2
太棒了!!!我已经寻找这个命令太久了。不过我必须说“:next”非常不直观,最好改为“:e[dit] *txt”! - mrk
3
@mrk 没错。打开多个文件是很明显的需求,所以应该允许使用 :e 命令来实现。":[count]n[ext] [++opt] [+cmd]" 的意思是“编辑[count]个下一个文件”。好吧,伙计,如果你这么说的话! - user146043

14

这需要两个操作。

打开所有的*.js文件并分成多列垂直窗口:

:argadd *.js
:argdo vs

在水平方向上分割:

:argdo sp

在选项卡中:

:argdo tabe

我做了水平分割版本,它打开了目录中的所有文件,但是为每个文件创建了四个分割。 - Rafał Cieślak

1

:args *.txt 也可以工作。

如果需要更多信息,请参考 :help argument-list:help 07.2。这两个部分都有关于如何使用参数列表以及缓冲区列表不是同一件事的解释。


-2
此外,除了其他答案之外,当您首次启动vim时,您可以同时打开多个文件,例如:
vim *.txt

1
这就是 OP 尝试的,但他遇到了错误:E77: Too many file names - kenorb
7
不行,这很好运作,出错的是 :e *.txt。真正的问题在于当 Vim 已经运行时,它不能起作用。 - Brian McCutchon
2
这实际上就是问题的第一行提到的。 - user146043

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接