Hoe kan ik meerdere bestanden tegelijk openen in Vim?

Is er een manier om alle bestanden in een map vanuit Vim te openen? Dus een :commanddat in feite zou zeggen: “Open alle bestanden onder /some/pathin 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 argsvereist, is om de lijst met bestanden in een tekstbestand te plaatsen en vervolgens de opdracht :sote gebruiken om de opdrachten uit te voeren in dat bestand.

Als u bijvoorbeeld alle bestanden die eindigen op .phpin een bepaalde map wilt openen, maakt u eerst files.txtaan 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.txtsnel te genereren, door de uitvoer van lsom te leiden naar een bestand en vervolgens een vim-macro om spvoor elke bestandsnaam te plaatsen.

Dit is natuurlijk niet zo elegant als het gebruik van de argsen argdocommando’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.

Other episodes