在vim中通过netrw编辑远程文件时创建本地备份

时间:2009-02-18 23:47:40

标签: vim backup scp netrw

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

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

每次保存远程文件时,有没有办法在本地自动生成备份(根据vim备份设置)?

5 个答案:

答案 0 :(得分:2)

我认为没有简单的设置可以切换。您可以尝试编写脚本 - 添加自己的BufWriteCmd自动命令来编写备份。尝试使用set verbose=9进行调试(并了解netrw是如何做到的)。

答案 1 :(得分:2)

我曾经遇到过这个问题的变体:在远程计算机上保留对源树所做的更改的本地记录。

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

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

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

答案 2 :(得分:1)

从您的scp协议使用情况来看,似乎您可以更轻松地使用fuse sshfs,这将使您能够支持正常的文件系统行为,而不仅仅是推/拉键入CRUD界面。

答案 3 :(得分:0)

netrw插件完全绕过:write命令,获得'备份'功能的唯一方法是使用自动命令自己完成。

答案 4 :(得分:0)

我意识到这不是对原始问题的直接回答 - 但是,你所做的似乎很像一个简单的VCS伪装 - 所以你有没有理由不制作远程文件,例如一个git存储库,然后在本地克隆该存储库并在编辑后推送更改?