Czy mogę otworzyć plik w istniejącej instancji Vima z zewnętrznego polecenia?

20

Niektóre aplikacje mają pojęcie „sesji” , w której można uruchomić polecenie załadowania pliku do istniejącej instancji aplikacji.

Na przykład, gdy piszę:

$ firefox http://vi.stackexchange.com

Firefox ponownie wykorzystuje istniejący proces Firefox, zamiast tworzyć nowy.

Czy to możliwe z Vimem?

ideasman42
źródło

Odpowiedzi:

22

Potrzebujesz kompilacji vima +clientserver, a następnie możesz użyć polecenia, vim --servername SERVERaby uruchomić instancję vim i vim --servername SERVER --remote FILEotworzyć plik w nazwanej instancji vim.


tylko macOS

MacVim domyślnie uruchamia serwer - możesz użyć, mvim --remote-tab-silentaby otworzyć plik na nowej karcie w istniejącej instancji MacVim lub mvim --remote-silentotworzyć plik w nowym buforze na tej samej karcie.

craigp
źródło
4

Chociaż odpowiedź @ craigp jest poprawna, uznałem, że najwygodniej jest po prostu dodać --remote-silentbez martwienia się o nazwy serwerów
(zakłada to, że nie chcesz adresować nazwanych instancji vim) .

Spowoduje to uruchomienie serwera lub skorzystanie z niego, jeśli jeszcze nie został uruchomiony.

Można to nazwać tak:

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

na przykład:

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

Skończyło się na tym, że musiałem użyć innej metody przesuwania kursora z powodu tej zdalnej inicjalizacji.

ideasman42
źródło