2009-02-18 21 views
6

我使用vim和netrw插件远程处理很多文件。我还通过更改&backupext(在documentation中找到)来保留时间戳备份。在vim中通过netrw编辑远程文件时创建本地备份

而在一个远程文件工作(SCP://server//folder/file.txt),我注意到,当我将它保存,备份甚至没有正在取得进展。

有没有方法可以让我有自动在本地做了备份(根据vim的备份设置)每次我保存远程文件?

+0

您是否尝试将'backupdir'设置为本地文件夹? – 2009-07-15 02:04:03

回答

2

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

1

从你的scp协议使用情况来看,似乎使用fuse sshfs会更容易,这会让你有正常的文件系统行为支持你,而不仅仅是一个推/拉式CRUD接口。

+0

netrw扩展在内部使用scp。我用sshfs运气不好。 – matpie 2009-07-16 16:02:45

2

我曾经努力解决这个问题的一种变体:保持我的源代码树作出了远程机器上的变化的志书。

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

解决方案1:使用BufWritePost里自动命令来调用SCP要复制的文件,它已经写入之后。如果系统允许进程共享文件描述符,这可以有效地工作,因为可以将远程计算机的主ssh会话运行并为后续会话共享连接。如果你没有那么幸运(我当时的工作在Windows计算机上),它需要谈判的每个文件的新连接的时间可以是痛苦的

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

0

netrw插件完全绕过:write命令,以获得“备份”功能回到唯一的办法就是使用自动命令自己做。

0

我意识到这不是一个直接的答案,原来的问题 - 但是,你在做什么,似乎很像一个简单VCS功能于变相 - 所以是有一个原因,你会不会如使远程文件一个git仓库,然后在本地克隆该仓库并在编辑之后推送更改?