次の行を含む「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を使用している場合は、:args
vimで次のように設定できます。
:args file-1 file-2 ... file-n
または、Unix では次のことができます。
:args `find . -name Makefile`
(ファイルパスに改行文字が含まれておらず、一致するファイルが1つ以上あるとします)
またはあなたの場合:
:args `cat filelist`