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 型シェル (zshおよびを含むbash) の場合:

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

GNU の場合xargs(ファイルが空の場合は-r実行を回避するためにも使用しますが、他のアプローチとは逆に、空の行がある場合はスキップしません):vim

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

答え3

すべてを開くにはインデックス現在の作業パス

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

答え4

すでに vim 内にいる場合は、:argsvim 内から設定できます。

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

ボーナスとして、Unix では次の操作も実行できます。

:args `find . -name Makefile`

(ファイル パスに改行文字が含まれておらず、一致するファイルが少なくとも 1 つあると仮定)

あるいはあなたの場合:

:args `cat filelist`

関連情報