2009-02-18 4 views
6

Ich arbeite mit vielen Dateien aus der Ferne mit vim und dem Netrw-Plugin. Ich habe auch Zeitstempel Sicherungen durch die Änderung der &backupext (in der documentation gefunden).Erstellen Sie lokale Sicherung beim Bearbeiten von Remote-Dateien über Netrw in Vim

Bei der Arbeit in einer Remote-Datei (scp: //server//folder/file.txt) habe ich festgestellt, dass beim Speichern nicht einmal ein Backup erstellt wird.

Gibt es eine Möglichkeit, ein Backup automatisch lokal (nach vim Backup-Einstellungen) jedes Mal, wenn ich eine Remote-Datei speichern kann gemacht haben?

+0

Haben Sie versucht, 'backupdir' in einen lokalen Ordner zu setzen? –

Antwort

2

Ich glaube nicht, dass es eine einfache Einstellung zum Umschalten gibt. Sie könnten versuchen, etwas zu skandieren, aber fügen Sie Ihren eigenen BufWriteCmd Autocommand hinzu, um ein Backup zu schreiben. Verwenden Sie zum Debuggen set verbose=9 (und um zu sehen, wie Netrw es tut).

1

Gut zu urteilen, von Ihrem scp Protokoll verwenden, scheint es, dass es viel einfacher für Sie sein würde, die fuse sshfs verwenden, die Sie normalen Dateisystem Verhalten unterstützen Sie anstatt nur eine Push/Pull-CRUD-Schnittstelle haben würde .

+0

Die Netrw-Erweiterung verwendet intern scp. Ich hatte Glück mit sshfs. – matpie

+0

Können Sie Ihre aktuellen Einstellungen posten? Schauen Sie sich auch http://vimdoc.sourceforge.net/htmldoc/options.html#'secure an. Sie können auch eine der Sandbox-Optionen entfernen, zumindest solange, bis Ihre Sicherung funktioniert. – RandomNickName42

2

ich mit einer Variante dieses Problem einmal zu kämpfen: lokale Aufzeichnungen Änderungen halten wir auf einen einzigen Remote-Rechner zu einem einzigen Quellbaum gemacht.

Ich behielt eine lokale Kopie des gesamten Quellbaums und ein lokales SVN-Repository, um die Dateien zu versionieren. Statt netrw zu verwenden und nach einer Möglichkeit zu suchen, Backups lokal zu speichern, habe ich alles lokal bearbeitet und musste meine Änderungen automatisch auf dem Remote-Computer verbreiten.

Lösung 1: Verwenden Sie einen BufWritePost Autocommand, um scp aufzurufen, um die Datei zu kopieren, nachdem sie geschrieben wurde. Dies kann effizient genug funktionieren, wenn das System es den Prozessen erlaubt, Dateideskriptoren gemeinsam zu nutzen, da es möglich ist, eine Master-SSH-Sitzung auf dem entfernten Rechner auszuführen und die Verbindung für nachfolgende Sitzungen freizugeben. Wenn Sie weniger Glück haben (ich arbeitete an einem Windows-Rechner zu der Zeit), kann die Zeit für eine neue Verbindung für jede Datei schmerzhaft sein

Lösung 2: für Windows verwenden Sie WinSCP, die eine " Remote-Computer aktualisiert "Modus, in dem es ein Verzeichnis und alle Unterverzeichnisse auf Änderungen überwacht und dann automatisch die Änderungen propagiert, mit einer Reihe von Regeln (zu ignorierende Muster, Übertragungsmodus für verschiedene Dateitypen usw.).

0

Das netrw-Plugin umgeht den Befehl :write vollständig, der einzige Weg, die "Backup" -Funktionalität zurück zu bekommen, ist es, es mit Hilfe von Autokommandos selbst zu tun.

0

Ich weiß, es ist keine direkte Antwort auf die ursprüngliche Frage - jedoch, was Sie tun, scheint viel wie ein einfaches-VCS-in-Verkleidung - so gibt es einen Grund, warum Sie nicht die Remote-Dateien z. ein Git-Repository, dann klonen Sie dieses Repository lokal und drücken Sie die Änderungen nach der Bearbeitung?

Verwandte Themen