Wiem, że Vim zezwala na tryb serwera klienta ( :h clientserver
): można go przekształcić w serwer, który otrzyma niektóre polecenia i je wykona oraz jako klient, który wyśle polecenia do serwera.
Rozumiem, jak to działa, ale nie wyobrażam sobie praktycznego zastosowania tej funkcji: w jakich przypadkach jest ona użyteczna i jaki przepływ pracy można utworzyć za pomocą tej funkcji?
Więc moje pytanie jest proste: Jaki jest pożytek z trybu serwera klienta Vima?
(Ponownie podkreślam, że moje pytanie nie dotyczy tego, jak to zrobić, ani jak działa, ale po co z tego korzystać).
clientserver
statox
źródło
źródło
Odpowiedzi:
Przed najnowszą funkcją kanału / zadania w Vim 7.4, funkcja klient-serwer była jedynym sposobem na porządną kompilację w tle - bez żadnej zależności od Pythona. Kompilację rozpoczynamy jako zadanie w tle, a kiedy się zakończy, powiadamia vim, dzięki kanałowi klient-serwer, że zakończyła się.
Jest również pośrednio wykorzystywany przez „wtyczki”, takie jak pyclewn, do integracji debuggera z vimem. W rzeczywistości pyclewn korzysta z funkcji + netbeans (która jest zbudowana na serwerze + clientserver). Inne znaczące projekty używają tego interfejsu netbeans do integracji vima z IDE - patrz
:h netbeans-intro
.Jest również używany przez niektóre wtyczki testowe, takie jak vimrunner, do uruchamiania testów w Vimie z wiersza poleceń. Używam go do testowania moich wtyczek na Travis.
Pamiętam też synchronizację moich kliknięć w interfejsie xdvi z kodem źródłowym LaTeX dzięki + clientserver.
źródło
Moje użycie tego jest nieco bardziej uproszczone (i być może powszechne) niż Luca Hermitte'a.
Jeśli uruchamiasz instancję gvim przy pomocy tej skompilowanej w (i jest, i była już od dłuższego czasu, np. Na głównych dystrybucjach Linuksa, takich jak Fedora i Debian), uruchamia się w trybie serwera. Podkreśliłem „gvim”, ponieważ to, co zamierzam opisać, nie odnosi się do pojedynczej
vim
instancji w terminalu GUI (chociaż przypuszczam, że może tak być, jeśli użyjesz odpowiednio parametru).W każdym razie możesz następnie otworzyć dowolny plik z dowolnego miejsca w tej instancji gvim za pomocą
gvim --remote [file path]
(bez--servername
określonego). Jestem tego fanem, ponieważ nie korzystam bezpośrednio z systemu plików za pomocą vima; zamiast tego używam ortodoksyjnej przeglądarki plików (dowódca północy) - a raczej ich stosy otwarte w różnych lokalizacjach, ponieważmc
są lekkie i pozwalają na różne skórki schematów kolorów, aby uprościć rozróżnianie między nimi (więc zwykle mam dwie lub trzy otwarte osobno tabulatory w co najmniej jednym terminalu GUI). Myślę jednak, że ta sama zasada będzie obowiązywać w każdej przeglądarce plików, która pozwala na jakąś formę niestandardowego skrótu, z którym można się skojarzyćgvim --remote %f
. Wmc
Mam go w menu użytkownika, więc F2 + e i podświetlony / wybrany plik są wysyłane do instancji gvim.To staje się trochę lepsze: jeśli otworzysz drugą instancję gvim, powiedzmy, na monitorze nr 2 tego samego pulpitu lub osobnym pulpicie i być może inny schemat kolorów w tym jednym, i tym razem nadaj mu wyraźny
--servername foo
, możesz wysłać pliki do tego wystąpienia zamiast:Coś, co może się przydać lub nie, w zależności od zakresu wykonywanych czynności itp.
źródło
less
, który jest natychmiastowy i jeden klawisz, aby wyjść) i być może wysyłanie ich do aplikacji innych niż vim, które również mają taki tryb zdalny (wiele rzeczy robi teraz, w tym inne „edytory”, których czasami używam do pozostawienia ustawionych zakładek nagłówków do przeglądania, a także przeglądarek internetowych) . Innymi słowy, powiedziałbym, że nawigacja po fimie z vimem wydaje się być rozwiązaniem dla nieużywaniamc
i--remote
;;)Wbudowane oprogramowanie. Wiele razy we wbudowanym oprogramowaniu masz gniazdo IP, ale ograniczone miejsce na lokalnym dysku twardym lub brak pamięci nieulotnej lub dowolną liczbę innych rzeczy. Możesz uruchomić serwer na płycie wbudowanej, a następnie klienta na komputerze programistycznym i skonfigurować lokalnie wszystkie ustawienia i tagi.
źródło
Pracę magisterską napisałem przy użyciu Vima, LaTeXa i BibTeXa. Do zarządzania referencjami BibTeX korzystałem z programu o nazwie JabRef . JabRef ma fajną małą funkcję, w której można podłączyć go do instancji serwera Vim, a następnie „wypchnąć” referencję BibTeX z JabRef do dokumentu LaTeX, który edytujesz w Vimie.
źródło
Mój obieg pracy jest podobny do tego, co powiedział goldilocks w swojej odpowiedzi. Używam
:terminal
funkcji vim8 w połączeniu z--remote
opcją. Utrzymuję układ 2 okien w vimie. Kod w lewym oknie i terminal po prawej. Korzystam z prawego okna (terminala), aby uruchamiać kompilacje, nawigować w systemie plików i otwierać pliki w bieżącej instancji vima (z terminala). Ten przepływ pozwala mi operować przy bardzo mniejszym zaangażowaniu myszy.Używam gvim i icewm (każdy menedżer okien powinien to zrobić)
Uruchom instancję gvim
Wewnątrz gvim, otwórz terminal w układzie pionowym
W oknie terminala podzielone
Możesz utworzyć aliasy dla tych długich poleceń w .zshrc / .bashrc i skrócić je do swoich upodobań.
W tym przepływie pracy rzadko wychodzę z instancji gvim i rzadko używam myszy.
źródło