vimのclientserver機能を使用して設定の同期を維持することは可能ですか?


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

Linuxを実行していて、本当におかしくなりたい場合はinotifywatchinotify-toolsを使用してvimrcファイルの変更を監視し、変更ごとにこれを自動的に実行できます(テストされていない、マンページからの例)

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

ただし、これはお勧めしません。構文エラーのあるファイルを誤って保存すると、すべてのvimセッションが失敗する可能性があります...


-1

clientserverについては知りませんが、他のソリューションに興味があるとおっしゃっていたので、Githubからのドットファイルに関するこの記事を調べることをお勧めします。

https://dotfiles.github.io

明らかにGithubを使用する必要はありませんが、概念はしっかりしており、広く使用されているようです。


私はあなたのdotfilesをバージョン管理下に置くことは素晴らしいと思いますが、同じマシンで実行されているvimのインスタンスについて具体的に尋ねていました(質問を更新しました)。
xthrd 2015

1
-1; この回答は、質問された質問にはまったく関係ありません。問題は、vimrcの管理ではなく、vimrcのリロードについてです。
Martin Tournoij、2015

私の回答の前の元の質問では、彼が同じマシン上のインスタンスについて話していることは明らかではありませんでした。当時、私の答えは問題を解決しました。
tgrosinger 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.