使用vim远程编辑serverB上的文件,只能从serverA访问

puk*_*puk 5 vim ssh scp remote-access

虽然我从未尝试过这个,但显然可以按照此处的描述在vim中远程编辑文件.在我的特殊情况下,我需要访问的服务器只能从校园访问,因此我必须登录我的大学帐户,如下所示:

ssh user@login.university.com
Run Code Online (Sandbox Code Playgroud)

然后从那里登录到安全服务器,如下所示:

ssh user@secure.university.com
Run Code Online (Sandbox Code Playgroud)

我有无密钥ssh设置,所以我可以像这样自动化这个过程:

ssh user@login.university.com -t "ssh user@secure.university.com"
Run Code Online (Sandbox Code Playgroud)

无论如何远程编辑文件,例如secure.university.com/user/foo.txt在我的本地机器上?

编辑:

我的意图是在我的本地机器上使用vim,因为它是不切实际的(移动.vim folder,复制.vimrc),在某些情况下是不可能的(使用某些设置重新编译vim,修补vim源,安装语言美化器)以使远程机器上的vim表现得像我一样希望它表现得好.我想要的是发出这样的东西(这不是准确的scp,我知道)

vim scp://user@login.university.com scp://user@secure.university.com//home/user/foo.txt
Run Code Online (Sandbox Code Playgroud)

puk*_*puk 4

好吧,经过一番工作后我想通了。首先,您必须按照此处.ssh/config所述编辑(或创建)您的文件。出于我们的目的,我们将添加这样的一行,这实际上添加了一个代理。

Host secure
  User          Julius
  HostName      secure.university.com
  ProxyCommand  ssh Tiberius@login.university.com nc %h %p 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

然后我们可以像这样简单地将scp文件复制(通过)secure.university.com:/home/Julius/fee/fie/fo/fum.txt到本地计算机

scp secure:/home/Julius/fee/fie/fo/fum.txt fum.txt
Run Code Online (Sandbox Code Playgroud)

在此基础上进行扩展,我们可以将其远程加载到 vim 中,如下所示:

vim scp://secure//home/Julius/fee/fie/fo/fum.txt
Run Code Online (Sandbox Code Playgroud)

badd或像这样使用:

:badd scp://secure//home/Julius/fee/fie/fo/fum.txt
Run Code Online (Sandbox Code Playgroud)

.vimrc为了简化我的生活,我在文件中添加了最常用子文件夹的快捷方式:

nnoremap <leader>scp :badd scp://secure//home/Julius/fee/fie/fo/fum.txt
Run Code Online (Sandbox Code Playgroud)

到目前为止,vim 已证明非常清楚这是一个远程文件,因此如果 C 文件包含如下文件:

#include "foo.h"
Run Code Online (Sandbox Code Playgroud)

它不会抱怨“foo.h”丢失