Wie öffne ich alle Dateien im aktuellen Verzeichnis und alle Unterverzeichnisse mit vim?


8

Bisher Ich habe mit vim */**der alle Dateien in einem Unterverzeichnis zu öffnen , scheint aber nicht diejenigen , die in dem aktuellen Verzeichnis, und vim *das sich öffnet , um alle Dateien im currentVerzeichnis. Aber wie öffne ich alle Dateien im aktuellen Verzeichnis und in allen Unterverzeichnissen?

Antworten:


8

Mit zsh:

vim ./**/*(.)

Andere Muscheln:

find . \( -name '.?*' -prune \) -o -type f -exec vim {} +

Zum Öffnen nur der (nicht ausgeblendeten) regulären Dateien (keine Verzeichnisse, Symlinks, Pipes, Geräte, Türen, Sockets ...).

vim ./**/*(D-.)

Andere Muscheln, GNU find:

find . -xtype f -exec vim {} +

Zum Öffnen von versteckten Dateien (und zum Durchsuchen versteckter Verzeichnisse) und zum Verknüpfen mit regulären Dateien.

Und:

vim ./***/*(D-.)

andere Muscheln:

find -L . -type f -exec vim {} +

um auch Symlinks zu durchlaufen, wenn Sie in Unterverzeichnisse schauen.

Wenn Sie nur eine Ebene von Unterverzeichnissen möchten:

vim ./* ./*/*

Beachten Sie, dass es eine gute Angewohnheit ist, Ihren Globs ein Präfix voranzustellen, ./falls einige der Dateinamen mit -oder beginnen +.

(Natürlich findfunktionieren auch diese zsh. Beachten Sie, dass sie möglicherweise mehrere Instanzen ausführen, vimwenn die Liste der Dateien groß ist.)


1

In Bash mit shopt -s extglob:

for file in **/**; do [[ -f "$file" ]] && vim "$file"; done

Beachten Sie, dass gemäß Stéphanes Kommentar vor Bash 4.3 alle Symlinks in den behandelten Verzeichnissen folgen würden.


1
Das läuft allerdings eine vimpro Datei. Beachten Sie, dass bash vor 4.3 zum Durchlaufen von Symlinks mit verwendet wurde **. Es wurde in 4.3 behoben.
Stéphane Chazelas

@ StéphaneChazelas Ist ein vim pro Datei per se schlecht (vorausgesetzt, es handelt sich um mehrere Dateien anstatt um mehrere hundert)? Vielen Dank für den Hinweis zu den Symlinks: Ich werde das in bearbeiten.
Jasonwryan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.