So bringen Sie vim dazu, mehrere Dateien gleichzeitig in Registerkarten zu öffnen

85

Ist es möglich, vim zu veranlassen, mehrere Dateien in Registerkarten zu öffnen, ähnlich wie der args <path>Befehl mehrere Dateien in Puffern öffnet?

Wenn Sie so etwas tun, :tabe ./*wird der Fehler "E77: Zu viele Dateinamen" ausgegeben, obwohl die Anzahl der Dateien unter dem in der tabpagemaxEigenschaft festgelegten Wert liegt .

(Ich glaube, die vim -p <files>Option wird in Registerkarten geöffnet, aber ich hoffe, einen Weg zu finden, dies zu tun, wenn vim bereits geöffnet ist.)

Asche
quelle
12
Vielen Dank, dass Sie die Option -p erwähnt haben. das ist, wonach ich gesucht habe
user72923
4
Ich habe diese Frage über Google gefunden. Ich habe gesucht, wie ich vim mit Tabulatoren von der Kommandozeile aus öffnen kann vim -p:-)
Rocket Hazmat
2
Verwandte Themen: Wie kann ich mehrere Registerkarten gleichzeitig öffnen? bei Vim SE
Kenorb
Verwandte Themen: Öffnen Sie mehrere Dateien in neuen Registerkarten mit VIM bei Stapelüberlauf.
Mihai Capotă
Verwandte: Wie kann ich in vim viele Registerkarten für viele Dateien öffnen? bei Super User.
Mateusz Piotrowski

Antworten:

82
:tab all

öffnet alle Dateien in der Argumentliste von Vim in einzelnen Registerkarten. Die Argumentliste wird anfänglich auf die Liste der Dateinamen gesetzt, die beim Starten von Vim in der Befehlszeile angegeben werden. Die Liste kann mit den :argsBefehlen und den zugehörigen Befehlen geändert werden. Sehen

:help :all
:help argument-list

Beispiel:

:args *.c
:tab all

öffnet alle .c-Dateien im aktuellen Verzeichnis in einzelnen Registerkarten.

garyjohn
quelle
Ich bin nicht sicher, wie das funktionieren soll. Angenommen, ich möchte alle TXT-Dateien im aktuellen Verzeichnis öffnen. Was würde ich eingeben? Wenn ich eintrete :tab all *.txt, kontert vim mit "E488: Trailing characters"
Ash
Ich habe die Antwort bearbeitet, um zu verdeutlichen, was ich unter "Argumenten" verstehe. Ich meinte eher Vims Argumentliste als Argumente dafür :tab all.
Garyjohn
1
Ich weiß nicht , von einem einzigen Befehl, der das tun kann, aber man kann durch Trennen sie mit einem vertikalen Balken, wie dies zwei Befehle in einer Zeile setzen: :args *.c | tab all.
Garyjohn
9
Der Nachteil ist, dass durch die Verwendung von :tab alldie vorhandenen Registerkarten ersetzt werden. Aus diesem Grund bietet es in meinem Anwendungsfall keinen großen Vorteil gegenüber dem erneuten Öffnen von Dateien mit vim -p. Wenn es jedoch eine Möglichkeit gäbe, vorhandene Registerkarten zu füllen :args, könnte es möglich sein, neue Registerkarten zu öffnen und die vorhandenen beizubehalten.
Kevin Qi
3
Wenn bereits eine Registerkarte geöffnet ist, ersetzen Sie diese argadddurch args.
cdosborn
4

Sie können tatsächlich neue Registerkarten öffnen und Ihre aktuellen Registerkarten behalten, ohne neue Funktionen zu schreiben. Siehe diese Antwort auf Stack Overflow: https://stackoverflow.com/a/11430615/200234

:args file1 file2 | argdo tabe

Möglicherweise möchten Sie :tabevorher eine neue leere Registerkarte ( ) öffnen, da die erste Datei in der aktuellen Registerkarte geöffnet wird. Außerdem bleibt ein zusätzlicher leerer Tab offen (um :help argdozu verstehen, warum).

Mihai Capota
quelle
Wenn Sie einer vorhandenen Gruppe neue Registerkarten hinzufügen, ist das dann nicht einfacher :tabe file1?
Jpaugh
@jpaugh, die Frage betrifft mehrere Dateien.
Mihai Capotă
Würde :args | argdo tabedie Frage aber nicht beantworten? Was ist der Grund für das Hinzufügen neuer Dateien auf diese Weise?
10.
@jpaugh, dies ist, was die Frage fragt: "Ich glaube, die Option vim -p <files> wird in Registerkarten geöffnet, aber ich hoffe, einen Weg zu finden, dies zu tun, wenn vim bereits geöffnet ist."
Mihai Capotă