使用文件列表在 Vim 中打开多个文件

使用文件列表在 Vim 中打开多个文件

我有一个文件“filelist”,其中包含以下几行:

text1.txt
text2.txt
text3.txt 

我正在寻找在 vim 中打开这 3 个文件的命令行调用。我尝试了以下方法:

$ cat filelist | vim - 

$ vim < cat filelist

但这些并没有产生预期的结果。

答案1

如果文件名不包含空格或其他有问题的字符,您可以使用

vim $(cat filelist)

对于带有空格的文件名,使用xargs更稳健(这里使用 GNUxargs特定选项):

xargs --delimiter '\n' --arg-file=filelist vim --

答案2

zsh

vim -- ${(f)"$(<filelist)"}

4.0+版本bash

readarray -r files < filelist &&
  vim -- "${files[@]}"

对于任何类似 Bourne 的 shell(包括zshbash):

(IFS='
'; set -f; exec vim -- `cat filelist`)

使用 GNU xargs(也用于-r避免vim在文件为空时运行,但与其他方法相反,不跳过空行(如果有):

xargs -rd '\n' -a filelist vim --

答案3

要打开全部索引.php在当前工作路径中

vim -p `find . -name index.php`

答案4

如果你已经在 vim 中,你可以:args从 vim 中设置:

:args file-1 file-2 ... file-n

另外,在 Unix 上你还可以这样做:

:args `find . -name Makefile`

(假设文件路径不包含换行符,并且至少有一个匹配的文件)

或者在你的情况下:

:args `cat filelist`

相关内容