w vimie mogę robić vim --servername foo
i vim --servername foo --remote-silent bar.txt
otwierać pliki w jednym wystąpieniu vima z kilku okien terminala (przez tmux lub cokolwiek innego). Jak to samo osiąga się w NeoVim?
neovim
clientserver
Rafael Vega
źródło
źródło
:help x11-clientserver
wydaje się to potwierdzać: „Komunikacja między klientem a serwerem odbywa się przez serwer X. […] Vim bez GUI z dostępem do wyświetlacza X11 (| włączono schowek | xterm) może również działać jako serwer poleceń, jeśli nazwa serwera jest wyraźnie podana „...Neovim remote to skrypt w języku Python do kontrolowania procesów neovim. Ma styl vim --servername i --remote opcje. Tego właśnie używam w moim środowisku pracy z wieloma terminalami.
źródło
Jak wspomniano, wszystkie funkcje serwera klienta zostały usunięte w Neovim. Wynika to z faktu, że używają pamięci współdzielonej X11, a Neovim usunął obsługę X11.
Jeśli jednak
:help --servername
użyję w Neovimie, skończę w dokumentacjiserverstart()
funkcji:Spowoduje to utworzenie gniazda
/tmp/
; sprawdź:echo v:servername
ścieżkę. Prawdopodobnie bardziej użyteczne jest użycie bardziej deterministycznego adresu (np.serverstart('/tmp/nvim-remote')
Chociaż prawdopodobnie będziesz chciał zawinąć to w funkcję, ponieważ nie doda ona liczby takiej jak Vim,--serverstart
jeśli już istnieje).Możesz wysyłać polecenia za pomocą interfejsu RPC API. O ile mi wiadomo, nie ma sposobu, aby wysyłać do tego polecenia tylko za pomocą Neovim (meh). Musisz zainstalować jednego z klientów interfejsu API . Na przykład z referencyjnym klientem API Python (który jest również tym, którego używa zdalny Neovim):
Prawdopodobnie możesz wysłać te same bajty za pomocą
echo ... >> /tmp/nvim-remove
polecenia powłoki, ale interfejs API RPC używa nieco nietrywialnego protokołu nietekstowego („MessagePack RPC”) i ustalenie, które bajty do wysłania było zbyt dużym wysiłkiem dla tego postu; -)Zobacz
:help rpc
pełne informacje na temat interfejsu RPC API Neovim.NB,
:help remote.txt
jak również wiele innych przedmiotów pomocy (takich jakhelp server2client()
i wiele innych) wciąż istnieje w Neovim, ale żaden z nich nie działa. Wygląda na to, że ktokolwiek usunął tę funkcję, wykonał dość niechlujną robotę.źródło
:terminal
. Biorąc pod uwagę te informacje, było to cudownie łatwe.