Gvim als "nur Instanz" definieren

2896
Rafael Almeida

Ich möchte, dass gvim "nur Instanz" ist, dh ich weiß von einer Option oder etwas, das die Datei als Registerkarte in meiner bereits geöffneten gvim-Instanz öffnet, anstatt eine neue zu öffnen.

Ein Beispiel zur Verdeutlichung: Angenommen, ich habe ein gvim-Fenster mit einer Datei, module1.c, geöffnet. Angenommen, ich bin auf einem Terminal. Welchen Befehl muss ich eingeben, damit 'module2.c' in demselben Fenster geöffnet wird, in dem sich jetzt module1.c befindet?

PS: Ich weiß, dass es eine Option -p gibt, mit der ich mehrere Dateien auf mehreren Registerkarten öffnen kann. Aber was ich suche, ist ein Weg, um einen neuen Tab von OUTSIDE gvim zu öffnen, nachdem es bereits läuft.

Wie es geht? Ist es überhaupt möglich?

6

2 Antworten auf die Frage

7
Rook

Ich möchte, dass gvim "nur Instanz" ist, dh ich weiß von einer Option oder etwas, das die Datei als Registerkarte in meiner bereits geöffneten gvim-Instanz öffnet, anstatt eine neue zu öffnen.

Lassen Sie mich hier nur etwas klären ... in vim sind Tabs nicht das, was die Leute erwarten würden. In den meisten Programmen sind sie eine "Instanz" einer Datei (ein Tab / eine Datei), aber in vim sind sie lediglich ein "Sichtpunkt", in den Sie mehrere vim-Fenster haben können, in denen jeweils alles enthalten ist, was Sie hineingeben.

Vim öffnet beim Öffnen einer Datei diese in einem Puffer. Ein Puffer für jede Datei. Sie können die Liste der geöffneten Puffer mit anzeigen

:ls 

Ein Beispiel zur Verdeutlichung: Angenommen, ich habe ein gvim-Fenster mit einer Datei, module1.c, geöffnet. Angenommen, ich bin auf einem Terminal. Welchen Befehl muss ich eingeben, damit 'module2.c' in demselben Fenster geöffnet wird, in dem sich jetzt module1.c befindet?

Wieder haben wir ein Terminologieproblem. Zur Diskussion nehme ich an, dass Sie "Fenster" wie in einem Fensterfenster und nicht in einem vim-internen Fenster meinen. Wenn Sie eine Datei in einer bereits geöffneten gvim-Instanz öffnen möchten, versuchen Sie es

gvim first_file.dat gvim --remote-tab second_file.dat 

Dies kann leicht verkürzt werden, indem Sie es in eine .bat-Datei einfügen (wenn Sie sich unter Windows befinden), und Sie müssen dann den "--..." - Teil nicht immer wieder eingeben.

PS: Ich weiß, dass es eine Option -p gibt, mit der ich mehrere Dateien auf mehreren Registerkarten öffnen kann. Aber was ich suche, ist ein Weg, um einen neuen Tab von OUTSIDE gvim zu öffnen, nachdem es bereits läuft.

Interessant, ich wusste nichts davon :)

Wie es geht? Ist es überhaupt möglich?

Sagen Sie, ob Sie danach gesucht haben.

Ja, genau das habe ich gesucht! = D Sie können den Befehl auch mit einem Shell-Skript verkürzen, das sich im Ordner / usr / bin befindet (ich habe meinen 'gvimt' genannt). Rafael Almeida vor 14 Jahren 0
Großartig, vielen Dank. Ich habe Alias ​​= vim = '/ c / Programme \ Dateien \ \ (x86 \) / Vim / vim73 / gvim.exe --remote-tab' in cygwin Jay R. Wren vor 13 Jahren 0
Sie können "Funktion g " in PowerShell ausführen Zotov vor 12 Jahren 0
3
nagul

Vim kann dies im Clientservermodus ausführen, wenn es mit der + clientserver- Option kompiliert wurde .

Starten Sie die erste vim-Instanz mit der Option --servername :

gvim --servername FILES --remote-silent file.txt 

Nun können Sie weitere Dateien in dieser Instanz öffnen, indem Sie entweder --servername oder nur die Option --remote angeben .

gvim --remote file2.txt  gvim --servername FOOBAR --remote file3.txt 

Entnommen aus der vim-Handbuchdokumentation zum Clientserver-Modus . Afaik, die neuen Dateien werden auf der aktiven Registerkarte als Puffer geöffnet. Ich bin nicht sicher, ob vim so konfiguriert werden kann, dass die eingehenden Dateien in neuen Registerkarten geöffnet werden.