6

我使用 vim 和 netrw 插件远程处理许多文件。我还通过更改&backupext(在文档中找到)来保留时间戳备份。

在处理远程文件 (scp://server//folder/file.txt) 时,我注意到当我保存它时,甚至没有进行备份。

有没有一种方法可以在每次保存远程文件时自动在本地进行备份(根据 vim 备份设置)?

4

5 回答 5

2

我不认为有一个简单的设置可以切换。不过,您可以尝试编写一些脚本 - 添加您自己的BufWriteCmd自动命令来编写备份。尝试使用set verbose=9调试(并查看 netrw 是如何做到的)。

于 2009-02-19T02:41:40.830 回答
2

我曾经为这个问题的一个变体而苦苦挣扎:在一台远程机器 上保存我对单个源树所做的更改的本地记录。

我维护了整个源代码树的本地副本和一个本地 svn 存储库来对文件进行版本控制。我没有使用 netrw 并寻找一种在本地保存备份的方法,而是在本地编辑了所有内容,并且需要一种自动将我的更改传播到远程机器的方法。

解决方案 1:使用 BufWritePost 自动命令调用 scp 以在文件写入后复制文件。如果系统允许进程共享文件描述符,这可以足够有效地工作,因为可以运行到远程机器的主 ssh 会话并为后续会话共享连接。如果您不太幸运(当时我正在使用 Windows 机器),为每个文件协商新连接所花费的时间可能会很痛苦

解决方案 2:对于 Windows,使用WinSCP,它具有“保持远程计算机更新”模式,在该模式下,它监视目录及其所有子目录的更改,然后根据一组规则自动传播更改(要忽略的模式,转移不同文件类型的模式等)。

于 2009-07-18T21:58:48.847 回答
1

好吧,从您的 scp 协议使用情况来看,使用fuse sshfs似乎对您来说要容易得多,这将使您能够拥有正常的文件系统行为来支持您,而不仅仅是推/拉类型的 CRUD 接口。

于 2009-07-14T17:42:11.107 回答
0

netrw 插件完全绕过了:write命令,恢复“备份”功能的唯一方法是使用自动命令自己完成。

于 2009-07-20T08:40:26.033 回答
0

我意识到这不是对原始问题的直接答案-但是,您正在做的事情看起来很像伪装的简单 VCS-因此,您是否有理由不制作远程文件,例如 git 存储库,然后在本地克隆该存储库并在编辑后推送更改?

于 2009-07-20T15:01:28.987 回答