2009-02-18 25 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倉庫,然後在本地克隆該倉庫並在編輯之後推送更改?