我使用 vim 和 netrw 插件远程处理许多文件。我还通过更改&backupext
(在文档中找到)来保留时间戳备份。
在处理远程文件 (scp://server//folder/file.txt) 时,我注意到当我保存它时,甚至没有进行备份。
有没有一种方法可以在每次保存远程文件时自动在本地进行备份(根据 vim 备份设置)?
我不认为有一个简单的设置可以切换。不过,您可以尝试编写一些脚本 - 添加您自己的BufWriteCmd
自动命令来编写备份。尝试使用set verbose=9
调试(并查看 netrw 是如何做到的)。
我曾经为这个问题的一个变体而苦苦挣扎:在一台远程机器 上保存我对单个源树所做的更改的本地记录。
我维护了整个源代码树的本地副本和一个本地 svn 存储库来对文件进行版本控制。我没有使用 netrw 并寻找一种在本地保存备份的方法,而是在本地编辑了所有内容,并且需要一种自动将我的更改传播到远程机器的方法。
解决方案 1:使用 BufWritePost 自动命令调用 scp 以在文件写入后复制文件。如果系统允许进程共享文件描述符,这可以足够有效地工作,因为可以运行到远程机器的主 ssh 会话并为后续会话共享连接。如果您不太幸运(当时我正在使用 Windows 机器),为每个文件协商新连接所花费的时间可能会很痛苦
解决方案 2:对于 Windows,使用WinSCP,它具有“保持远程计算机更新”模式,在该模式下,它监视目录及其所有子目录的更改,然后根据一组规则自动传播更改(要忽略的模式,转移不同文件类型的模式等)。
好吧,从您的 scp 协议使用情况来看,使用fuse sshfs似乎对您来说要容易得多,这将使您能够拥有正常的文件系统行为来支持您,而不仅仅是推/拉类型的 CRUD 接口。
netrw 插件完全绕过了:write
命令,恢复“备份”功能的唯一方法是使用自动命令自己完成。
我意识到这不是对原始问题的直接答案-但是,您正在做的事情看起来很像伪装的简单 VCS-因此,您是否有理由不制作远程文件,例如 git 存储库,然后在本地克隆该存储库并在编辑后推送更改?