回答:
引数を指定して最初のVimセッションを起動する場合--servername VIM
:
$ vim --servername VIM
その後、引数を使用して他のシェルからコマンドを送信できます--remote-send
。
たとえば、ステータスラインを使用して変数の値を表示g:myvar
し、vimrcに次の行がある場合:
let g:myvar = "foo"
set stl+=%{g:myvar}
次に:let g:myvar = "bar"
、別のシェルからその値()を変更できます。
$ vim --remote-send ':let g:myvar = "bar"<cr>'
ステータスラインは、値の変更を反映する必要があります。
最後のコメントにあるように、Vimインスタンスが通常モードでない場合、前のコマンドは期待どおりに機能しません。もっとシンプルかもしれませんが、2つの解決策があります:
1)キー<esc>
を追加して通常モードにする
2)式を評価する--remote-expr
代わりに引数を使用して--remote-send
、コードに変数に新しい値を割り当てる小さなヘルパー関数を作成する
最初の解決策:
$ vim --remote-send '<esc>:let g:myvar = "bar"<cr>'
2番目の解決策:
vimrcで次の関数を定義します。
function! Myfunc(value)
let g:myvar = a:value
endfunction
次に、シェルで:
$ vim --remote-expr 'Myfunc("bar")'
+clientserver
機能を実装していないと思います(github.com/tpope/vim-dispatch/issues/163#issuecomment-175383047)。その場合、このプラグインが役立つかもしれません:github.com/mhinz/neovim-remote