![跨服务器比较文件](https://linux22.com/image/203045/%E8%B7%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%AF%94%E8%BE%83%E6%96%87%E4%BB%B6.png)
曾几何时,我记得做过大致类似这样的事情:
vimdiff <(scp://some_server/home/user/.zshrc) <(scp://some_server-qa/home/user/.zshrc)
(其中some_server
和some_server-qa
是在我的用户和密钥等中定义的~/.ssh/config
,因此不必将其包含在 shell 中)。
问题是我无法弄清楚需要什么语法才能完成这项工作,并且我无法通过谷歌搜索找到任何内容。我确信这里有人知道我错过了什么。我缺少什么?
答案1
vim
确实支持使用某些 URL 打开远程文件,因此您可以执行以下操作:
vimdiff scp://some_server{,-qa}/home/user/.zshrc
输入文档:h scp
内的内容。vim
如果在构建时尚未启用该支持,您始终可以这样做:
vimdiff -R <(ssh some_server cat /home/user/.zshrc) \
<(ssh some_server-qa cat /home/user/.zshrc)
尽管您将无法修改远程文件。
这-R
是vim
为了提醒您编辑这些文件是没有意义的(尽管您总是可以这样做::w !ssh host 'cat > file'
将编辑后的文件发回(或者只是:w !ssh host '>file'
如果您的登录 shellhost
也恰好zsh
在默认情况$NULLCMD
下cat
))。
答案2
一如既往,斯特凡的回答非常出色。这只是一个附录。如果您觉得这有帮助,请也为他的答案点赞。
我无法(无论出于何种原因)让该scp://
方案与我的系统一起工作,但该sftp://
方案确实对我有用:
vimdiff sftp://some_server{,-qa}/home/user/.zshrc