使用文件清單在 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`

相關內容