5

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

ssh user@login.university.com

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

ssh user@secure.university.com

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

ssh user@login.university.com -t "ssh user@secure.university.com"

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

编辑:

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

vim scp://user@login.university.com scp://user@secure.university.com//home/user/foo.txt
4

3 回答 3

4

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

Host secure
  User          Julius
  HostName      secure.university.com
  ProxyCommand  ssh Tiberius@login.university.com nc %h %p 2> /dev/null

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

scp secure:/home/Julius/fee/fie/fo/fum.txt fum.txt

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

vim scp://secure//home/Julius/fee/fie/fo/fum.txt

badd像这样使用:

:badd scp://secure//home/Julius/fee/fie/fo/fum.txt

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

nnoremap <leader>scp :badd scp://secure//home/Julius/fee/fie/fo/fum.txt

到目前为止,vim 已经证明非常清楚这是一个远程文件,所以如果 C 文件包含这样的文件:

#include "foo.h"

它不会抱怨缺少“foo.h”

于 2012-09-18T05:44:24.863 回答
0

一旦你在机器上 SSH,你就可以在你的 shell 上的远程主机上运行任何命令(也包括 vim)。在您的机器上运行时记录运行 vim 后。

于 2012-09-18T02:48:09.720 回答
0

由于您使用的是 ssh,因此您基本上可以通过 CLI 访问服务器,就像您坐在机器本身前面一样。话虽如此,您可以在该机器上使用任何程序,就像在您自己的机器上使用它一样。假设这secure.university.com/user/foo.txt意味着在安全服务器上的foo.txtlocation 处调用了一个文本文件/user,那么通过 ssh 登录后,以下命令将起作用:

cd /user
vim foo.txt

您还可以使用安装在机器上的 nano 或任何其他基于 CLI 的编辑器。

于 2012-09-18T02:50:55.387 回答