Nếu bạn khởi chạy phiên Vim đầu tiên của mình với đối số --servername VIM
:
$ vim --servername VIM
sau đó bạn có thể gửi bất kỳ lệnh nào từ bất kỳ shell nào khác với đối số --remote-send
.
Ví dụ: nếu bạn sử dụng dòng trạng thái của mình để hiển thị giá trị của một số biến g:myvar
và bạn có các dòng sau trong vimrc:
let g:myvar = "foo"
set stl+=%{g:myvar}
Sau đó, bạn có thể thay đổi giá trị của nó ( :let g:myvar = "bar"
) từ shell khác:
$ vim --remote-send ':let g:myvar = "bar"<cr>'
Các trạng thái nên phản ánh sự thay đổi của giá trị.
Như bình luận cuối cùng của bạn nói rằng, nếu phiên bản Vim của bạn không ở chế độ bình thường, lệnh trước đó sẽ không hoạt động như mong đợi. Có thể đơn giản hơn, nhưng đây là 2 giải pháp khả thi:
1) thêm khóa <esc>
ở chế độ bình thường
2) sử dụng đối số --remote-expr
thay vì --remote-send
đánh giá một biểu thức và viết một hàm trợ giúp nhỏ có mã sẽ gán giá trị mới cho biến của bạn
Giải pháp đầu tiên:
$ vim --remote-send '<esc>:let g:myvar = "bar"<cr>'
Giải pháp thứ hai:
Xác định hàm sau trong vimrc của bạn:
function! Myfunc(value)
let g:myvar = a:value
endfunction
Sau đó, trong vỏ của bạn:
$ vim --remote-expr 'Myfunc("bar")'