Для этого вы можете настроить локальные автокоманды буфера (см .: help autocmd-buflocal )
Устанавливает vim для вызова rsync после каждой записи в буфер.
au BufWritePost,FileWritePost <buffer> silent !rsync -a /path/to/somedir/ user@host:/remote/dir/ --exclude=*.sw?
Одно предостережение: вы должны установить одну из этих автокоманд для каждого файла, который вы редактируете в многофайловом проекте. Это становится громоздким, и легко забыть настроить это для новых файлов / буферов - конечно, вы можете настроить обычную автокоманду, но тогда у вас будет запускать rsync для записи в файлы, не входящие в проект.
С rsync-over-ssh это работает, если удаленный хост доступен по каналу с малой задержкой - и, возможно, не так хорошо, иначе каждая запись блокирует буфер от дальнейших обновлений до завершения rsync. Чтобы сделать опыт лучше, я рекомендую либо
- Повторное использование SSH-соединения с использованием мультиплексирования соединений через постоянное соединение.
- Отправка rsync в фоновом режиме, добавив
&
в конце команды. YMMV.