Создавайте локальную резервную копию при редактировании удаленных файлов через netrw в vim - PullRequest
6 голосов
/ 19 февраля 2009

Я работаю со многими файлами удаленно, используя vim и плагин netrw. Я также сохраняю временные резервные копии, меняя &backupext (см. Документацию ).

Работая в удаленном файле (scp: //server//folder/file.txt), я заметил, что при его сохранении резервная копия даже не создается.

Можно ли как-нибудь сделать резервное копирование автоматически локально (в соответствии с настройками vim backup) каждый раз, когда я сохраняю удаленный файл?

Ответы [ 5 ]

2 голосов
/ 19 июля 2009

Я однажды боролся с вариантом этой проблемы: ведение локальных записей изменений, которые я внес в дерево исходных текстов на удаленной машине single .

Я сохранил локальную копию всего исходного дерева и локальный svn-репозиторий для версий файлов. Вместо того чтобы использовать netrw и искать способ локального сохранения резервных копий, я редактировал все локально и мне нужен был способ автоматически распространять мои изменения на удаленную машину.

решение 1: используйте автокоманду BufWritePost, чтобы вызвать scp для копирования файла после его записи. Это может работать достаточно эффективно, если система позволяет процессам совместно использовать файловые дескрипторы, поскольку можно запустить сеанс master ssh на удаленной машине и совместно использовать соединение для последующих сеансов. Если вам повезло меньше (в то время я работал на машине с Windows), время, необходимое для согласования нового соединения для каждого файла, может быть болезненным

решение 2: для Windows используйте WinSCP , который имеет режим «держать удаленный компьютер обновленным», в котором он отслеживает изменения для каталога и всех его подкаталогов, а затем автоматически распространяет изменения, учитывая набор правил (шаблоны для игнорирования, режим передачи для различных типов файлов и т. д.).

2 голосов
/ 19 февраля 2009

Я не думаю, что есть простая настройка для переключения. Вы можете попробовать что-то написать в сценарии - добавьте свою собственную BufWriteCmd автокоманду для записи резервной копии. Попробуйте использовать set verbose=9 для отладки (и посмотреть, как это делает netrw).

1 голос
/ 14 июля 2009

Судя по использованию протокола scp, кажется, что вам будет гораздо проще использовать fuse sshfs , который позволит вам поддерживать нормальное поведение файловой системы, а не просто CRUD интерфейс типа push / pull.

0 голосов
/ 20 июля 2009

Я понимаю, что это не прямой ответ на исходный вопрос - однако то, что вы делаете, похоже на простую замаскированную VCS - так что есть причина, по которой вы не хотите создавать удаленные файлы, например git-репозиторий, затем локально клонировать этот репозиторий и отправить изменения после редактирования?

0 голосов
/ 20 июля 2009

Плагин netrw полностью обходит команду :write, единственный способ вернуть функцию «резервного копирования» - это сделать это самостоятельно с помощью автокоманд.

...