Можно ли использовать функциональность клиентского сервера vim для синхронизации настроек?

11

Я обычно имею несколько экземпляров vim, работающих на одной машине. Когда я делаю изменения в моем vimrc, я могу просто :source ~/.vimrc(с простым отображением или autocmd). Но для того, чтобы все запущенные экземпляры отражали изменения, мне нужно запустить их в каждом из них отдельно. Могу ли я использовать эту clientserverфункцию, чтобы сообщить всем экземплярам о перезагрузке моего vimrc?

Я также был бы заинтересован в решениях, которые не используют clientserver.

xthrd
источник

Ответы:

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, и хотите получить действительно сумасшедший, вы могли бы использовать inotifywatchот Inotify-инструментов для мониторинга файла vimrc (ы) для изменений, и выполнить это автоматически при каждом изменении (непроверенный, пример адаптирован из страницы руководства)

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

Я бы не рекомендовал это, хотя ... Если вы случайно сохраните файл с синтаксической ошибкой, вы можете прервать весь сеанс VIM ...

Мартин Турной
источник
-1

Я не знаю насчет clientserver, но, поскольку вы сказали, что вас интересуют другие решения, я бы порекомендовал ознакомиться с этой статьей о точечных файлах из Github.

https://dotfiles.github.io

Вы, очевидно, не должны использовать Github, но концепции разумны и, кажется, широко используются.

tgrosinger
источник
Хотя я считаю, что держать ваши точечные файлы под контролем версий - это здорово, я специально спрашивал об экземплярах vim, работающих на той же машине (я обновил вопрос).
xthrd
1
-1; Этот ответ не имеет никакого отношения к заданному вопросу. Вопрос в том, чтобы перезагрузить vimrc , а не управлять vimrc .
Мартин Турной
Исходный вопрос до моего ответа не давал понять, что он говорил об экземплярах на одной машине. В то время, когда мой ответ действительно отвечал на вопрос.
tgrosinger