有没有办法从Vim中打开目录中的所有文件?因此:command
,这实际上表示“将所有文件打开/some/path
到缓冲区中”。
理想情况下,最好以递归方式在目录下打开所有文件。
Answers:
您要查找的命令是args:
例如:
:args /path_to_dir/*
将打开目录中的所有文件
:tab all
可将它们放在单独的选项卡中。
"/path_to_dir/subdir/" Illegal file name
)。快速的解决方案是运行第二条命令argd */
,再次将其从列表中删除
:argdo source my_commands_batch.vim
一种不需要弄乱的方法args
是将文件列表放在文本文件中,然后使用:so
命令在该文件中运行命令。
例如,如果要打开.php
以给定目录结尾的所有文件,请首先创建一个files.txt
包含文件列表的文件,并在其前面加上要用来打开它们的任何命令。
sp alpha.php
sp bravo.php
sp charlie.php
然后,在vim中:
:so files.txt
如果文件列表很大,则files.txt
通过将输出重定向ls
到文件,然后使用vim宏sp
在每个文件名之前添加前缀来快速生成文件是相对简单的。
显然,这不如使用args
andargdo
命令优雅,但这些命令也要复杂得多。
也许也可以通过命令行上的单个命令来执行此操作,但是即使16年之后,我仍然发现vim编程很奇怪而且很神秘。
递归打开文件的另一种方法
find . -type f -exec vi {} \;
kate **/*(^/)
(使用zsh globbing语法)可以完成所需工作:递归地从给定目录中打开文件。它不是“从内部”,根本没有使用vim,而是“还需要做”。甚至kate ~/.vimrc ~/.bashrc
。完全省略“ from withing”,“ from the给定目录”和“ recursively”,但它“还做了所需的工作”:打开文件。
**
递归匹配文件。例如:args /path_to_dir/**