답변:
인수를 사용하여 첫 번째 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")'
+clientserver
기능을 구현하지 않는다고 생각 합니다 ( github.com/tpope/vim-dispatch/issues/163#issuecomment-175383047 ). 이 경우이 플러그인이 도움이 될 것입니다. github.com/mhinz/neovim-remote