如何使用Vim编辑网络上的文件?


13

目前,我正在通过SSH进入服务器并在服务器上执行Vim的方式来实现。这样做的好处是,不必处理通过SCP从远程服务器打开文件的繁琐语法,并且更重要的是,能够真正快速浏览服务器的文件系统。另一方面,它有滞后性,这使得编辑有点困难。

编辑大量远程文件的规范方法是什么?


6
确切地说,您的做法。
伊格纳西奥·巴斯克斯

如果vim表现出延迟,则可能是网络问题,而不是工作流程问题。
约瑟夫R.13年

ssh root@myvps.com; vim / etc / somefile-我登录,然后启动Vim
jcora 2013年

实际上是与网络有关。当我按一个键时,它必须从欧洲向美国发送一个数据包,而我正在使用的Vim实例实际上正在运行。
jcora 2013年

您也可以这样做ssh root@myvps.com vim /etc/somefile(请注意缺少;)。
terdon

Answers:



20

您可以使用本地vim或gvim进行远程编辑。

:e scp://me@someplace.else/~/myfiles/whatever.file

scp安全复制协议。它与的验证方式相同ssh,因此您的ssh密钥必须可用,等等。还支持其他各种协议(请参阅:help netrw-externapp参考资料),但如果您已经在同一位置使用ssh,则scp可能是最简单的。

您可以通过这种方式浏览目录,只需确保路径以结尾即可/。否则,vim会将其转换为新文件。

:w通过scp自动写入文件。如果由于某种原因写入失败,您应该注意,因为它们将成为状态栏中的“ shell返回1”类的东西。但是,请注意:如果你通知,Vim不知道,并且能产生的后果-例如,如果你现在退出,也不会发出警告。如果您使用过多,则很容易错过这一点:wa; | 那是我唯一的警告。

有关官方文档,请参见:help netrw


+1我正要写这个。该NETRW插件(这通常是默认安装)有各种各样的方式来读取远程文件。
Greg Hewgill 2013年

我指的是这个选项时,我说:“这有没有应对来自SCP远程服务器的开放文件繁琐的语法的利益,更重要的是,能够真正快速浏览服务器的文件系统” 这样似乎仅限于我。
jcora

1
公平地说,您的问题最初并未提及“在SCP上的远程服务器”,该内容随后进行了编辑。
Greg Hewgill,

@GregHewgill:感谢您的来信,因为我有点困惑-这是用于一般用途的最简单直接的方法(SSHFS没有冒犯性!)。如果将URL附加到文件路径相对比较麻烦,我很好奇执行的任务实际上是如何需要某人与编辑一起坐下来的……尤其是。因为您只需向上箭头命令即可。但要各有各的。
goldilocks 2013年

@GregHewgill是的,我知道,我在移动时在手机上写下了问题,所以我无意中遗漏了一些东西。goldilocks,我一直都在打开和关闭文件。也浏览文件系统并从那里打开。附加URL +路径比仅“在那儿”更麻烦。
jcora

2

我会使用rsync。它仅转移更改的内容。像这样:

rsync -e ssh -va remoteuser@remotehost:remotedir .

然后您可以随意在本地编辑文件。零延迟。在提交文件之前,您需要检查所有文件:

rsync -e ssh -va . remoteuser@remotehost:remotedir

我假设您首先创建本地目录并cd进入该目录。您还可以使它处理文件的删除,但是要非常小心,因为在错误的目录中执行该操作可能会破坏整个目录树。

rsync -e ssh -va --delete . remoteuser@remotehost:remotedir

我要做的是首先使用“ n”标志在“干模式”下运行它,如下所示:

rsync -e ssh -van --delete . remoteuser@remotehost:remotedir

如果是真实的,它将报告将要执行的操作。如果对报告的列表感到满意,请再次运行它,并删除“ n”标志。

rsync非常有效。还有其他各种标志。非常复杂。


0

也许您被命名为最合适的方式-SSH方式,但是仍然取决于所编辑文件的性质,您可以分配一个小分区,使其共享,然后将文件放在其中,当然,如果安全策略允许此操作。对于这个建议,您可能最容易使用NFS或Samba,但是在UNIX中,仍然编辑测试文件是一个普遍概念,也许您必须按照目前的方式来保存它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.