Якщо ви запускаєте свій перший сеанс 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 не працює у звичайному режимі, попередня команда не працюватиме, як очікувалося. Можуть бути і простіші, але ось два можливих рішення:
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")'