Si vous lancez votre première session Vim avec l'argument --servername VIM
:
$ vim --servername VIM
alors vous pouvez envoyer n'importe quelle commande depuis n'importe quel autre shell avec l'argument --remote-send
.
Par exemple, si vous utilisez votre ligne d'état pour afficher la valeur d'une variable g:myvar
et que vous avez les lignes suivantes dans votre vimrc:
let g:myvar = "foo"
set stl+=%{g:myvar}
Ensuite, vous pouvez changer sa valeur ( :let g:myvar = "bar"
) à partir d'un autre shell:
$ vim --remote-send ':let g:myvar = "bar"<cr>'
La ligne d'état doit refléter la modification de la valeur.
Comme le dit votre dernier commentaire , si votre instance Vim n'est pas en mode normal, la commande précédente ne fonctionnera pas comme prévu. Il peut y avoir plus simple, mais voici 2 solutions possibles:
1) ajoutez la clé <esc>
pour être en mode normal
2) utilisez l'argument --remote-expr
au lieu d' --remote-send
évaluer une expression et écrivez une petite fonction d'aide dont le code assignera la nouvelle valeur à votre variable
Première solution:
$ vim --remote-send '<esc>:let g:myvar = "bar"<cr>'
Deuxième solution:
Définissez la fonction suivante dans votre vimrc:
function! Myfunc(value)
let g:myvar = a:value
endfunction
Ensuite, dans votre coque:
$ vim --remote-expr 'Myfunc("bar")'
+clientserver
fonctionnalité ( github.com/tpope/vim-dispatch/issues/163#issuecomment-175383047 ). Si tel est le cas, ce plugin pourrait peut-être vous aider: github.com/mhinz/neovim-remote