Si inicia su primera sesión de Vim con el argumento --servername VIM
:
$ vim --servername VIM
entonces puede enviar cualquier comando desde cualquier otro shell con el argumento --remote-send
.
Por ejemplo, si usa su línea de estado para mostrar el valor de alguna variable g:myvar
, y tiene las siguientes líneas en su vimrc:
let g:myvar = "foo"
set stl+=%{g:myvar}
Luego puede cambiar su valor ( :let g:myvar = "bar"
) desde otro shell:
$ vim --remote-send ':let g:myvar = "bar"<cr>'
La línea de estado debe reflejar el cambio del valor.
Como lo dice su último comentario , si su instancia de Vim no está en modo normal, el comando anterior no funcionará como se esperaba. Puede ser más simple, pero aquí hay 2 posibles soluciones:
1) agregue la clave <esc>
para estar en modo normal
2) use el argumento en --remote-expr
lugar de --remote-send
evaluar una expresión y escriba una pequeña función auxiliar cuyo código asignará el nuevo valor a su variable
Primera solución
$ vim --remote-send '<esc>:let g:myvar = "bar"<cr>'
Segunda solución:
Defina la siguiente función en su vimrc:
function! Myfunc(value)
let g:myvar = a:value
endfunction
Luego, en tu caparazón:
$ vim --remote-expr 'Myfunc("bar")'