使用vim远程编辑服务器上的文件,只能从服务器访问

时间:2012-09-18 02:34:45

标签: vim ssh remote-access scp

虽然我从未尝试过这个,但显然可以按照here所述远程编辑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,因为它不切实际(移动.vim folder,复制.vimrc),在某些情况下不可能(使用某些设置重新编译vim,修补vim源,安装语言beautifiers)使远程机器上的vim按照我希望它的行为方式运行。我想要的是发布这样的东西(这不是准确的scp,我知道)

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

3 个答案:

答案 0 :(得分:4)

好好解决一下后,我发现了。首先,您必须按照here所述编辑(或创建).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"

它不会抱怨&#34; foo.h&#34;缺少

答案 1 :(得分:0)

在机器中进行SSH连接后,您可以在shell上的远程主机中运行任何命令(也是vim)。在您的计算机上运行时记录运行vim。

答案 2 :(得分:0)

由于您使用的是ssh,因此您基本上可以通过CLI访问服务器,就像您坐在机器前面一样。话虽如此,您可以使用该计算机上的任何程序,就像您在自己的计算机上使用它一样。假设secure.university.com/user/foo.txt表示在安全服务器上的位置foo.txt处有一个名为/user的文本文件,则通过ssh登录后,以下命令将起作用:

cd /user
vim foo.txt

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