我正在远程服务器上编辑一堆文件。我可以使用 SSH(公钥或密码)进行连接。我使用Vim的方式如下:
vim scp://user@server//path/to/file.cpp
我需要在我的电脑上使用Vim,因为它是定制的,因此我不想使用服务器上安装的Vim。
我无法在此远程服务器上安装任何内容。为了编译,我运行make
.
我希望能够make
从 Vim 运行,以便它在服务器上编译。我想避免打开另一个通过 SSH 连接到该服务器的终端。
那么我的问题是:是否可以通过 Vim 维持 SSH 连接?
谢谢
答案1
当然,只要您最近在客户端上安装了 OpenSSH。你有“控制管道”并且man ssh_config
会向你展示魔法。基本上在客户端上,您将创建一个主机条目,~/.ssh/config
如下所示:
Host my_remote_server # a symbolic name of your choice
Hostname server_IP_or_DNS # the real name
User username # the username you use for login
IdentityFile ~/.ssh/a_suitable_ssh_key_if_any # for authentication purposes
ControlMaster auto
ControlPath ~/.ssh/%C # or ~/.ssh/%h-%p-%r for older versions
ControlPersist 5m # or yes for neverexpiring persistent connection
通过这样做,第一个连接将打开一个“通道”,该通道将在指定的时间内或永远保持打开状态。从现在开始,您可以ssh
仅使用您输入的名称来引用您的连接Host
。因此,例如,不要写:
vim scp://username@server_IP_or_DNS//full_path/to/file.cpp
你会写:
vim scp://my_remote_server//full_path/to/file.cpp
或者
ssh my_remote_server
要终止现有的持久连接,您需要运行:
ssh -O exit my_remote_server
所有这些也适用于普通 SSH、SCP 和 SFTP。就这样吧。