Is er een manier om alle bestanden in een map vanuit Vim te openen? Dus een :command
dat in feite zou zeggen: “Open alle bestanden onder /some/path
in buffers”.
Idealiter zou het geweldig zijn om alle bestanden recursief onder een map te openen.
Antwoord 1, autoriteit 100%
Het commando dat je zoekt is args:
Bijvoorbeeld:
:args /path_to_dir/*
opent alle bestanden in de map
Antwoord 2, autoriteit 19%
Waarom werkt het niet als ik alle bestanden wil openen die eindigen op een bepaalde extensie?
Ik heb geprobeerd
:n ./**.cs
en opent alleen de bestanden in de huidige map.
Ik heb het antwoord gevonden. De juiste code is :n **/*.cs
Voor meer informatie :h find
Antwoord 3, autoriteit 8%
Heb je het geprobeerd
:n /some/path/*
Het opent alle bestanden in /some/path
Ik denk echter niet dat het bestand recursief zal openen.
BEWERKEN
Misschien wordt het gebruik van ** recursief geopend zoals daf vermeldde
Antwoord 4, autoriteit 4%
Een methode die geen geknoei met args
vereist, is om de lijst met bestanden in een tekstbestand te plaatsen en vervolgens de opdracht :so
te gebruiken om de opdrachten uit te voeren in dat bestand.
Als u bijvoorbeeld alle bestanden die eindigen op .php
in een bepaalde map wilt openen, maakt u eerst files.txt
aan met daarin de lijst met bestanden, voorafgegaan door met welk commando je ook wilt gebruiken om ze te openen.
sp alpha.php
sp bravo.php
sp charlie.php
Dan, binnen vim:
:so files.txt
Als de lijst met bestanden groot is, is het relatief triviaal om het bestand files.txt
snel te genereren, door de uitvoer van ls
om te leiden naar een bestand en vervolgens een vim-macro om sp
voor elke bestandsnaam te plaatsen.
Dit is natuurlijk niet zo elegant als het gebruik van de args
en argdo
commando’s, maar die commando’s zijn ook een stuk ingewikkelder.
Er is misschien ook een manier om dit te doen met een enkele opdracht op de opdrachtregel, maar zelfs na 16 jaar vind ik vim-programmering nog steeds vreemd en geheimzinnig.
Antwoord 5
Een andere manier om bestanden recursief te openen
find . -type f -exec vi {} \;
Antwoord 6
Als je iets aan de lijst met argumenten wilt toevoegen;
:arga what_you-d_like_to_add
zie
:he arga
van/in vim voor meer informatie.