vim의 클라이언트 서버 기능을 사용하여 설정을 동기화 할 수 있습니까?


11

나는 보통 같은 컴퓨터에서 여러 개의 vim 인스턴스를 실행하고 있습니다. 내 vimrc를 변경하면 :source ~/.vimrc(쉽게 매핑하거나 autocmd로) 할 수 있습니다. 그러나 모든 실행중인 인스턴스가 변경 사항을 반영하도록하려면 각 인스턴스에서 개별적으로 변경을 실행해야합니다. 이 clientserver기능을 사용하여 모든 인스턴스에 vimrc를 다시로드하도록 지시 할 수 있습니까 ?

또한 사용하지 않는 솔루션에 관심이 있습니다 clientserver.

답변:


7

다음과 같이 Vim 서버에 vimrc 파일을 다시로드하도록 지시 할 수 있습니다.

$ vim --servername MARTIN --remote-send '<Esc>:source $MYVIMRC<CR>' 

또한 다음을 사용하여 모든 서버 목록을 얻을 수 있습니다.

$ vim --serverlist
MARTIN
CARPETSMOKER

for루프 와 결합 할 수 있습니다 :

$ for s in $(vim --serverlist); do vim --servername "$s" --remote-send '<Esc>:source $MYVIMRC<CR>'; done

많은 타이핑이 있기 때문에 쉘 스크립트에 넣을 수 있습니다 ~/bin/reload-vimrc. 물론 Vim 내에서 호출 할 수도 있습니다.

:!reload-vimrc

당신이 리눅스를 실행하는, 정말 미친 할 경우, 당신은 사용할 수 inotifywatch에서 inotify를-도구 의 변화에 대한의 vimrc 파일 (들)을 모니터링하고 모든 변경에 자동으로 실행하기 (테스트되지 않은 예는 맨 페이지에서 발췌)

$ inotifywatch -v -e modify -t 60 -r ~/.vimrc ~/.vim

그래도 권장하지는 않습니다 ... 실수로 구문 오류가있는 파일을 저장하면 모든 vim 세션을 중단시킬 수 있습니다 ...


-1

나는 클라이언트 서버에 대해 모른다.하지만 당신이 다른 솔루션에 관심이 있다고 말했기 때문에 Github의 도트 파일에 대한이 글을 살펴 보는 것이 좋습니다.

https://dotfiles.github.io

분명히 Github을 사용할 필요는 없지만 개념은 건전하며 널리 사용되는 것 같습니다.


버전 제어에서 도트 파일을 사용하는 것이 훌륭하다고 생각하지만, 특히 동일한 컴퓨터에서 실행중인 vim 인스턴스에 대해 묻고있었습니다 (질문을 업데이트했습니다).
xthrd

1
-1; 이 답변은 실제로 묻는 질문과 관련이 없습니다. 문제는 vimrc관리 하지 않고 vimrc다시로드 하는 것 입니다.
Martin Tournoij

내 대답 이전의 원래 질문은 그가 같은 컴퓨터의 인스턴스에 대해 이야기하고 있음을 분명히하지 못했습니다. 당시 내 대답은 그 문제를 해결했다.
tgrosinger
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.