Se avvii la tua prima sessione di Vim con l'argomento --servername VIM
:
$ vim --servername VIM
quindi è possibile inviare qualsiasi comando da qualsiasi altra shell con l'argomento --remote-send
.
Ad esempio, se usi la tua statusline per visualizzare il valore di alcune variabili g:myvar
e hai le seguenti righe nel tuo vimrc:
let g:myvar = "foo"
set stl+=%{g:myvar}
Quindi puoi cambiarne il valore ( :let g:myvar = "bar"
) da un'altra shell:
$ vim --remote-send ':let g:myvar = "bar"<cr>'
La linea di stato dovrebbe riflettere la modifica del valore.
Come dice il tuo ultimo commento , se l'istanza di Vim non è in modalità normale, il comando precedente non funzionerà come previsto. Potrebbe esserci più semplice, ma qui ci sono 2 possibili soluzioni:
1) aggiungi la chiave <esc>
per essere in modalità normale
2) usa l'argomento --remote-expr
invece di --remote-send
valutare un'espressione e scrivi una piccola funzione di supporto il cui codice assegnerà il nuovo valore alla tua variabile
Prima soluzione:
$ vim --remote-send '<esc>:let g:myvar = "bar"<cr>'
Seconda soluzione:
Definisci la seguente funzione nel tuo vimrc:
function! Myfunc(value)
let g:myvar = a:value
endfunction
Quindi, nella tua shell:
$ vim --remote-expr 'Myfunc("bar")'