Se você iniciar sua primeira sessão do Vim com o argumento --servername VIM:
$ vim --servername VIM
então você pode enviar qualquer comando de qualquer outro shell com o argumento --remote-send.
Por exemplo, se você usar sua linha de status para exibir o valor de alguma variável g:myvare tiver as seguintes linhas no seu vimrc:
let g:myvar = "foo"
set stl+=%{g:myvar}
Então você pode alterar seu valor ( :let g:myvar = "bar") de outro shell:
$ vim --remote-send ':let g:myvar = "bar"<cr>'
A linha de status deve refletir a alteração do valor.
Como seu último comentário diz, se sua instância do Vim não estiver no modo normal, o comando anterior não funcionará conforme o esperado. Pode ser mais simples, mas aqui estão 2 soluções possíveis:
1) adicione a chave <esc>para estar no modo normal
2) use o argumento em --remote-exprvez de --remote-sendavaliar uma expressão e escreva uma pequena função auxiliar cujo código atribuirá o novo valor à sua variável
Primeira solução:
$ vim --remote-send '<esc>:let g:myvar = "bar"<cr>'
Segunda solução:
Defina a seguinte função no seu vimrc:
function! Myfunc(value)
let g:myvar = a:value
endfunction
Então, no seu shell:
$ vim --remote-expr 'Myfunc("bar")'