我有一个文件“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(包括zsh
和bash
):
(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`