目前,我正在通过SSH进入服务器并在服务器上执行Vim的方式来实现。这样做的好处是,不必处理通过SCP从远程服务器打开文件的繁琐语法,并且更重要的是,能够真正快速浏览服务器的文件系统。另一方面,它有滞后性,这使得编辑有点困难。
编辑大量远程文件的规范方法是什么?
vim
表现出延迟,则可能是网络问题,而不是工作流程问题。
ssh root@myvps.com vim /etc/somefile
(请注意缺少;
)。
目前,我正在通过SSH进入服务器并在服务器上执行Vim的方式来实现。这样做的好处是,不必处理通过SCP从远程服务器打开文件的繁琐语法,并且更重要的是,能够真正快速浏览服务器的文件系统。另一方面,它有滞后性,这使得编辑有点困难。
编辑大量远程文件的规范方法是什么?
vim
表现出延迟,则可能是网络问题,而不是工作流程问题。
ssh root@myvps.com vim /etc/somefile
(请注意缺少;
)。
Answers:
您可以使用本地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
。
我会使用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非常有效。还有其他各种标志。非常复杂。