Öffnen Sie in Vim mehrere Dateien mit einer Dateiliste

Öffnen Sie in Vim mehrere Dateien mit einer Dateiliste

Ich habe eine Datei „filelist“, die die folgenden Zeilen enthält:

text1.txt
text2.txt
text3.txt 

Ich suche nach einem Kommandozeilenaufruf, der die 3 Dateien in vim öffnet. Ich habe Folgendes versucht:

$ cat filelist | vim - 

Und

$ vim < cat filelist

Diese führen jedoch nicht zum gewünschten Ergebnis.

Antwort1

Wenn die Dateinamen keine Leerzeichen oder andereproblematischZeichen können Sie verwenden

vim $(cat filelist)

Bei Dateinamen mit Leerzeichen xargsist die Verwendung robuster (hier werden GNU- xargsspezifische Optionen verwendet):

xargs --delimiter '\n' --arg-file=filelist vim --

Antwort2

Mit zsh:

vim -- ${(f)"$(<filelist)"}

Mit bash4.0+:

readarray -r files < filelist &&
  vim -- "${files[@]}"

Mit jeder Bourne-ähnlichen Shell (einschließlich zshund bash):

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

Mit GNU xargs(wird ebenfalls verwendet, -rum die Ausführung zu vermeiden vim, wenn die Datei leer ist, aber im Gegensatz zu den anderen Ansätzen werden ggf. leere Zeilen nicht übersprungen):

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

Antwort3

Zum Öffnen allerindex.phpim aktuellen Arbeitspfad

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

Antwort4

Wenn Sie sich bereits in vim befinden, können Sie :argsvon vim aus Folgendes festlegen:

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

Bonus: Unter Unix können Sie außerdem Folgendes tun:

:args `find . -name Makefile`

(vorausgesetzt, Dateipfade enthalten keine Zeilenumbruchzeichen und es gibt mindestens eine passende Datei)

Oder in Ihrem Fall:

:args `cat filelist`

verwandte Informationen