如何在Vim中一次打开多个文件?

时间:2010-01-07 19:52:25

标签: vim

有没有办法从Vim中打开目录中的所有文件?所以:command实际上会说“将/some/path下的所有文件打开到缓冲区”。

理想情况下,以递归方式打开目录下的所有文件会很棒。

6 个答案:

答案 0 :(得分:103)

您正在寻找的命令是args:

例如:

:args /path_to_dir/*

将打开目录

中的所有文件

答案 1 :(得分:21)

如果我想打开以特定扩展名结尾的所有文件,为什么它不起作用? 我试过了

:n ./**.cs

并仅打开currenty目录中的文件。

我找到了答案。正确的代码是:n **/*.cs

了解更多信息:h find

答案 2 :(得分:9)

你试过吗

:n /some/path/*

它将打开/ some / path

中的所有文件

我不认为它会以递归方式打开文件。

修改

也许使用**会像daf提到的那样递归打开

答案 3 :(得分:4)

不需要弄乱args的方法是将文件列表放在文本文件中,然后使用:so命令运行该文件中的命令。

例如,如果要打开在给定目录中以.php结尾的所有文件,请首先创建包含文件列表的files.txt,并添加您要用于打开的任何命令的前缀它们。

sp alpha.php
sp bravo.php
sp charlie.php

然后,在vim中:

:so files.txt

如果文件列表很大,通过将files.txt的输出重定向到文件,然后使用vim宏来预先添加{{1},快速生成ls文件相对简单在每个文件名之前。

这显然不如使用spargs命令那么优雅,但这些命令也复杂得多。

也许有一种方法可以在命令行中使用单个命令执行此操作,但即使在16年后,我仍然发现vim编程很奇怪而且很神秘。

答案 4 :(得分:1)

递归打开文件的另一种方法

find . -type f -exec vi {} \;

答案 5 :(得分:1)

如果您想添加到参数列表中;

:arga what_you-d_like_to_add

:he arga

来自/ in vim以获取更多信息。