虽然我从未尝试过这个,但显然可以按照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
答案 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的编辑器。