我在vim中完成了大部分工作。 我更喜欢使用vim在本地编辑文件,而不是在服务器上运行vim并运行vim,原因很多,其中一个最重要的就是在慢速连接上的UI响应。
我知道我可以使用vim和scp编辑远程文件,而且我也有一个使用sshfs的设置,使我可以非常简单地cd到一个挂载点,然后vimfind一些文件。
但是,每次我保存文件,它都会把整个文件写到远程服务器上, 这真的减慢了我的工作stream程。
我真正想要做的是有这样的设置:
这将更快,带宽效率更高,并具有相同的function。
我通常使用git或svn来实现类似的结果,但是当我没有使用这种SCM系统的奢侈品时,我真的希望有这种最小的function。
我的问题是:
1.有谁知道任何现有的脚本或程序会为我做一些或全部的这些?
2.任何人都在乎鞭打一些屁股,将做的伎俩? 我知道应该可以用这些几个做…
xdelta可以为你做补丁和哈希检查。
假设你已经用sshfs挂载了这个文件, 我保留文件扩展名,以防您想享受语法突出显示:
#!/bin/bash if [ ! -f "$1" -o ! -w "$1" ] then echo "ERROR: cannot open $1 for editing" exit 1 fi TMP="/tmp/$(date +%s)-$$-$(basename $1)" TMP2="$TMP.2" PAT="$TMP.patch" /bin/cp $1 $TMP /bin/cp $TMP $TMP2 /usr/bin/vim $TMP2 /usr/bin/xdelta delta $TMP $TMP2 $PAT /bin/cp $1 $1.orig if /usr/bin/xdelta patch $PAT $1.orig $1 then /bin/rm $TMP $TMP2 $PAT else echo "ERROR: xdelta patch failed, keeping temporary files $TMP $TMP2 $PAT" exit 1 fi
假设你称之为deltavim或者其他的东西
deltavim /path/to/remotefile.conf
这将需要本地两个副本,以达成三angular洲,但如果成功,将删除所有。 它使用一个.orig离开原始的远程文件,但如果你愿意的话,你可以添加一行来删除补丁。
如果在编辑过程中远程文件发生了变化,xdelta会注意到并拒绝修补。
无论如何,也许这是你的起点。
祝你好运! (…从来没有指出一个加载,未经testing的脚本,你从互联网上下载你喜欢的文件…)
当你用vim进行远程连接的时候,它是否真的写了整个文件?
vim ftp://myserver//path/file.txt