Często też używam wielu monitorów, więc zrobiłem proste obejście, dopóki vim nie zaimplementuje tej funkcji. Używając skryptu lua o nazwie gitv, mogę otworzyć plik na wielu instancjach GVIM jednocześnie. Zasadniczo, gdy istnieją dwa wystąpienia GVIM o nazwie GVIM1 i GVIM2, to po prostu upewniłem się, że tylko jeden plik jest edytowalny jednocześnie, a wszystkie pozostałe są przeglądarkami. (Wszystko odbywa się automatycznie bez monitowania.)
Przepływ pracy: Obecnie gitv jest przeznaczony dla repozytoriów git, więc można go używać tylko do tych plików w repozytorium git. Możesz łatwo zmienić to domyślne zachowanie, modyfikując funkcję lsFiles ().
Aby najpierw otworzyć a.txt na GVIM1, użyj
$ gitv gvimr GVIM1 a.txt
Otworzy się okno gvim, jeśli go nie ma. Następnie, aby otworzyć ten sam plik a.txt w innej instancji GVIM2, użyj
$ gitv gvimr GVIM2 a.txt
(lub możesz utworzyć alias taki jak $ gvim2 a.txt)
Następnie gitv wewnętrznie wykonuje następujące czynności:
- znajdź wszystkie wystąpienia gvim, które mają otwarte „a.txt”. (W tym przypadku GVIM1)
- ustaw wszystkie bufory a.txt na „tylko do odczytu”, „nomodifiable” i „autoread”.
- Zmodyfikowany bufor zostanie zapisany na dysku przed ustawieniem „tylko do odczytu”).
- usuń plik wymiany.
- ponownie otwórz a.txt na GVIM2. (gvim może otworzyć ten plik bez problemu, ponieważ nie ma pliku wymiany).
Jeśli chcesz edytować plik a.txt na monitorze 1 zamiast monitora 2, zrób to, aby przełączyć aktywny bufor: $ gitv gvimr GVIM1 a.txt (lub gvim1 a.txt) Można to zrobić łatwiej w gvim1 za pomocą ctrl + g + a.txt
(Spowoduje to automatyczne ustawienie tego samego bufora jako otwartego w innych przypadkach gvim „tylko do odczytu”, aby zapobiec uszkodzeniu danych).
gitv można pobrać tutaj: http://code.google.com/p/gitv/
Został przetestowany tylko na Linuksie gvim, ale można go łatwo przenieść na MacVIM.