ファイルリストを使用してVimで複数のファイルを開く

ファイルリストを使用してVimで複数のファイルを開く

次の行を含む「filelist」ファイルがあります。

text1.txt
text2.txt
text3.txt 

vimはこの3つのファイルを開くコマンドライン呼び出しを探しています。私は以下を試しました:

$ cat filelist | vim - 

そして

$ vim < cat filelist

しかし、これらは期待した結果を得られませんでした。

答え1

ファイル名にスペースやその他の内容が含まれていない場合問題がある利用可能な文字

vim $(cat filelist)

スペースを含むファイル名の場合、使用はxargsより強力です(xargsここではGNU固有のオプションが使用されています)。

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

すべて開くindex.php現在の作業パスから

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`

関連情報