2009-02-18 4 views
6

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

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

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

+0

Вы пытались установить 'backupdir' в локальную папку? –

ответ

2

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

1

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

+0

Расширение netrw использует scp внутренне. Я имел смешанную удачу с sshfs. – matpie

+0

Можете ли вы опубликовать текущую конфигурацию? Кроме того, ознакомьтесь с http://vimdoc.sourceforge.net/htmldoc/options.html#'secure ', вы также можете отключить любую из параметров песочницы, по крайней мере, пока не получите работу резервного копирования. – RandomNickName42

2

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

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

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

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

0

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

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^