Kann ich eine Datei in einer vorhandenen Vim-Instanz über einen externen Befehl öffnen?

20

Einige Anwendungen haben den Begriff "Sitzung" , in der Sie einen Befehl ausführen können, um eine Datei in eine vorhandene Instanz einer Anwendung zu laden.

Zum Beispiel, wenn ich tippe:

$ firefox http://vi.stackexchange.com

Firefox verwendet einen vorhandenen Firefox-Prozess erneut, anstatt einen neuen zu erstellen.

Ist das mit Vim möglich?

ideasman42
quelle

Antworten:

22

Sie müssen vim mit kompilieren. +clientserverAnschließend können Sie mit dem Befehl vim --servername SERVEReine vim-Instanz starten und vim --servername SERVER --remote FILEdie Datei in der angegebenen vim-Instanz öffnen.


Nur für MacOS

MacVim führt standardmäßig einen Server aus. Mit dieser Option können Sie mvim --remote-tab-silenteine Datei auf einer neuen Registerkarte in Ihrer vorhandenen MacVim-Instanz oder mvim --remote-silentin einem neuen Puffer auf derselben Registerkarte öffnen.

craigp
quelle
4

Obwohl die Antwort von @ craigp richtig ist, empfand ich es als am bequemsten, sie einfach hinzuzufügen, --remote-silentohne sich Gedanken über Servernamen zu machen
(dies setzt voraus, dass Sie keine benannten vim-Instanzen ansprechen möchten) .

Dies startet den Server oder verwendet einen, falls dieser noch nicht gestartet ist.

Man kann es so nennen:

gvim --remote-silent '+cal cursor(line,col)' some_file

z.B:

gvim --remote-silent '+cal cursor(102,4)' src/code.c

Aufgrund dieser Remote-Initialisierung musste ich schließlich eine andere Methode zum Bewegen des Cursors verwenden.

ideasman42
quelle