Если вы запускаете свой первый сеанс 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>'
Второе решение:
Определите следующую функцию в вашем 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