【问题标题】:Create local backup when editing remote files via netrw in vim在 vim 中通过 netrw 编辑远程文件时创建本地备份
【发布时间】:2010-10-08 11:34:31
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否尝试将“backupdir”设置为本地文件夹?

标签: vim backup scp netrw


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • netrw 扩展在内部使用 scp。我对 sshfs 的运气好坏参半。
      • 你能发布你当前的配置吗?另外,请查看 vimdoc.sourceforge.net/htmldoc/options.html#'secure' ,您可能还想取消任何沙箱选项的保护,至少在您的备份正常工作之前。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        我意识到这不是对原始问题的直接回答 - 但是,您所做的看起来很像一个简单的 VCS-in-disguise - 那么您是否有理由不制作远程文件,例如一个 git 存储库,然后在本地克隆该存储库并在编辑后推送更改?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-12
          • 1970-01-01
          • 2015-11-27
          相关资源
          最近更新 更多