Ich verwende auch häufig Multi-Monitore, daher habe ich eine einfache Problemumgehung vorgenommen, bis vim diese Funktion implementiert. Mit einem Lua-Skript namens gitv kann ich eine Datei auf mehreren Instanzen von GVIM gleichzeitig öffnen. Wenn es zwei Instanzen von GVIM mit den Namen GVIM1 und GVIM2 gibt, habe ich lediglich sichergestellt, dass nur eine Datei gleichzeitig bearbeitet werden kann und alle anderen Viewer sind. (Alles wird automatisch ohne Aufforderung erledigt.)
Workflow: Derzeit ist gitv für Git-Repositorys konzipiert, sodass es nur für diese Dateien in einem Git-Repository verwendet werden kann. Sie können dieses Standardverhalten einfach ändern, indem Sie die Funktion lsFiles () ändern.
Verwenden Sie zum ersten Öffnen von a.txt in GVIM1
$ gitv gvimr GVIM1 a.txt
Dies öffnet ein gvim-Fenster, wenn es keines gibt. Verwenden Sie dann, um dieselbe a.txt auf einer anderen Instanz GVIM2 zu öffnen
$ gitv gvimr GVIM2 a.txt
(oder Sie können einen Alias wie $ gvim2 a.txt erstellen)
Dann führt gitv intern Folgendes aus:
- Finde alle Instanzen von gvim, bei denen "a.txt" geöffnet ist. (In diesem Fall GVIM1)
- Setzen Sie alle a.txt-Puffer auf "schreibgeschützt", "nomodifizierbar" und "autoread".
- Der Puffer, der geändert wurde, wird auf die Festplatte geschrieben, bevor "schreibgeschützt" gesetzt wird.)
- Entfernen Sie die Auslagerungsdatei.
- Öffnen Sie a.txt auf GVIM2 erneut. (gvim kann diese Datei problemlos öffnen, da keine Auslagerungsdatei vorhanden ist.)
Wenn Sie a.txt auf Monitor 1 anstelle von Monitor 2 bearbeiten möchten, wechseln Sie dazu den aktiven Puffer: $ gitv gvimr GVIM1 a.txt (oder gvim1 a.txt) Dies kann in gvim1 einfacher mit Strg + g erfolgen + a.txt
(Dadurch wird automatisch derselbe Puffer in anderen Instanzen von gvim "schreibgeschützt" geöffnet, um eine Beschädigung der Daten zu verhindern.)
gitv kann hier heruntergeladen werden: http://code.google.com/p/gitv/
Es wurde nur unter Linux gvim getestet, konnte aber problemlos auf MacVIM portiert werden.