代码之家  ›  专栏  ›  技术社区  ›  matpie

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

  •  6
  • matpie  · 技术社区  · 16 年前

    我使用vim和netrw插件远程处理许多文件。我还通过更改 &backupext (在 documentation )

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

    每次保存远程文件时,是否可以在本地自动进行备份(根据VIM备份设置)?

    5 回复  |  直到 15 年前
        1
  •  2
  •   rampion    16 年前

    我认为没有简单的切换设置。你可以尝试编写一些脚本-添加你自己的 BufWriteCmd 自动命令写入备份。试用使用 set verbose=9 用于调试(以及查看Netrw的工作方式)。

        2
  •  2
  •   Aryeh Leib Taurog    15 年前

    我曾经遇到过一个不同的问题:保存我对 单一的 上的源树 单一的 远程机器。

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

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

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

        3
  •  1
  •   RandomNickName42    15 年前

    从SCP协议的使用情况来看,使用 fuse sshfs 这将使您能够让正常的文件系统行为支持您,而不仅仅是推/拉类型的CRUD接口。

        4
  •  0
  •   too much php    15 年前

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

        5
  •  0
  •   Andrew Y    15 年前

    我意识到这不是对原始问题的直接回答——但是,你所做的看起来很像一个伪装的简单VCS——所以你为什么不制作远程文件(如Git存储库),然后在本地克隆该存储库,并在编辑后推送更改?