Wenn Sie Ihre erste Vim-Sitzung mit dem Argument starten --servername VIM
:
$ vim --servername VIM
Dann können Sie jeden Befehl von jeder anderen Shell mit dem Argument senden --remote-send
.
Wenn Sie zum Beispiel Ihre Statuszeile verwenden, um den Wert einer Variablen anzuzeigen g:myvar
, und Sie die folgenden Zeilen in Ihrem vimrc haben:
let g:myvar = "foo"
set stl+=%{g:myvar}
Dann können Sie den Wert ( :let g:myvar = "bar"
) in einer anderen Shell ändern :
$ vim --remote-send ':let g:myvar = "bar"<cr>'
Die Statuszeile sollte die Änderung des Werts widerspiegeln.
Laut Ihrem letzten Kommentar funktioniert der vorherige Befehl nicht wie erwartet, wenn sich Ihre Vim-Instanz nicht im normalen Modus befindet. Es mag einfacher sein, aber hier gibt es zwei mögliche Lösungen:
1) fügen Sie den Schlüssel <esc>
im normalen Modus zu
2) das Argument --remote-expr
statt --remote-send
eines Ausdrucks und schreiben Sie eine kleine Hilfsfunktion , deren Code bewerten den neuen Wert auf Ihre Variablen zuweisen
Erste Lösung:
$ vim --remote-send '<esc>:let g:myvar = "bar"<cr>'
Zweite Lösung:
Definieren Sie die folgende Funktion in Ihrem vimrc:
function! Myfunc(value)
let g:myvar = a:value
endfunction
Dann in deiner Schale:
$ vim --remote-expr 'Myfunc("bar")'
+clientserver
( github.com/tpope/vim-dispatch/issues/163#issuecomment-175383047 ). Wenn dies der Fall ist, könnte Ihnen dieses Plugin helfen: github.com/mhinz/neovim-remote