
我有一個檔案“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`