Jika Anda meluncurkan sesi Vim pertama Anda dengan argumen --servername VIM
:
$ vim --servername VIM
maka Anda dapat mengirim perintah apa pun dari shell lain dengan argumen --remote-send
.
Misalnya, jika Anda menggunakan status Anda untuk menampilkan nilai beberapa variabel g:myvar
, dan Anda memiliki baris berikut di vimrc Anda:
let g:myvar = "foo"
set stl+=%{g:myvar}
Kemudian Anda dapat mengubah nilainya ( :let g:myvar = "bar"
) dari shell lain:
$ vim --remote-send ':let g:myvar = "bar"<cr>'
Baris status harus mencerminkan perubahan nilai.
Seperti komentar terakhir Anda mengatakannya, jika instance Vim Anda tidak dalam mode normal, perintah sebelumnya tidak akan berfungsi seperti yang diharapkan. Mungkin ada yang lebih sederhana, tetapi di sini ada 2 solusi yang mungkin:
1) tambahkan kunci <esc>
untuk berada dalam mode normal
2) gunakan argumen --remote-expr
alih-alih --remote-send
untuk mengevaluasi ekspresi dan menulis fungsi pembantu kecil yang kodenya akan menetapkan nilai baru ke variabel Anda
Solusi pertama:
$ vim --remote-send '<esc>:let g:myvar = "bar"<cr>'
Solusi kedua:
Tentukan fungsi berikut di vimrc Anda:
function! Myfunc(value)
let g:myvar = a:value
endfunction
Kemudian, di shell Anda:
$ vim --remote-expr 'Myfunc("bar")'