这在 vim 中当然是可行的。您可以在 vim 中使用 scp:// 协议来编辑远程文件,并设置写入本地副本的命令。您还可以更改 vim 用于 :make 的程序,以在您的服务器上执行 ssh make。
您需要设置您的 ssh 密钥来轻松完成此操作(否则您将一直输入密码),但这相当简单。
另一种选择是作为 make 命令的一部分推送到远程存储库,而不是远程编辑。
EDIT:
首先,使用scp://
vim 内的协议。从:help netrw-start
(或从页面向下:help scp
)
Netrw 支持使用 url 对其他机器上的文件进行“透明”编辑
(参见 |netrw-transparent|)。作为一个例子,我们假设您有一个
在其他机器上的帐户;如果你可以使用 scp,请尝试:
vim scp://hostname/path/to/file
想让 ssh/scp 更容易使用吗?查看|netrw-ssh-hack|!
您还可以使用scp://
路径在:edit
命令,或者任何可以使用正常路径的地方。
并且,从提到的:help netrw-ssh-hack
,有关如何设置 ssh 密钥的说明:
改进浏览 *netrw-listhack* *netrw-ssh-hack* {{{2
尤其是用远程目录浏览器,不断输入密码
很乏味。
针对Linux/Unix系统,《Linux Server Hacks - 100个工业实力》一书
提示和工具”作者 Rob Flickenger(O'Reilly,ISBN 0-596-00461-3)给出了一个提示
用于设置无密码 ssh 和 scp 并讨论相关的安全性
问题。它曾经可以在http://hacks.oreilly.com/pub/h/66 http://hacks.oreilly.com/pub/h/66,
但显然该地址现在被重定向到一些“黑客杂志”。
我将尝试根据该文章和来自的通信进行总结
本·施密特:
(1) 在本机生成公私钥对
(ssh客户端):
ssh-keygen -t rsa
(根据提示将文件保存到~/.ssh/id_rsa中)
(2) 当要求输入密码时,只需点击(两次)即可,无需输入密码
密码。如果您确实使用密码,您还需要使用
ssh-agent,因此您只需在每个会话中输入一次密码。
如果您不使用密码,只需登录本地
计算机或以任何方式访问密钥文件就足够了
访问任何拥有该密钥授权登录的 ssh 服务器。
(3) 这会创建两个文件:
~/.ssh/id\_rsa
~/.ssh/id\_rsa.pub
(4)在目标机(ssh服务器)上:
cd
mkdir -p .ssh
chmod 0700 .ssh
(5) 在本地机器上(ssh客户端):(一行)
ssh {serverhostname} cat '>>' '~/.ssh/authorized\_keys2' < ~/.ssh/id_rsa.pub
或者,对于 OpenSSH,(一行)
ssh {serverhostname} cat '>>' '~/.ssh/authorized\_keys' < ~/.ssh/id_rsa.pub
你可以用以下方法测试一下
ssh {serverhostname}
您应该登录到服务器计算机,而无需进一步键入
任何事物。
如果您决定使用密码,请执行以下操作:
ssh-agent $SHELL
ssh-add
ssh {serverhostname}
当您使用 ssh-add 时,系统会提示您输入密钥密码,但不会
随后当您使用 ssh 时。要与 vim 一起使用,您可以使用
ssh-agent vim
并且,当接下来在 vim 中时,使用
:!ssh-add
或者,您可以将 ssh-agent 应用到您计划使用的终端
运行 vim:
ssh-agent xterm &
并在需要时执行 ssh-add 。
对于 Windows,vim 邮件列表上的人们提到 Pageant 可以帮助
避免经常需要输入密码。
Kingston Fung 写了另一种避免不断需要输入的方法
密码:
为了避免每次都需要输入 scp 密码,您
在文档中提供了一个设置无密码 ssh 帐户的技巧。我找到了一个
更好的方法:我可以使用常规 ssh 帐户,该帐户使用
密码即可访问资料,无需输入密码
每一次。这对于安全性和便利性都有好处。我尝试过 ssh 公钥
授权+ ssh-agent,实现这个,它有效!这里有两个
附有说明的链接:
- http://www.ibm.com/developerworks/library/l-keyc2/ http://www.ibm.com/developerworks/library/l-keyc2/
- http://sial.org/howto/openssh/publickey-auth/ http://sial.org/howto/openssh/publickey-auth/
要在远程系统上进行制作,您需要设置makeprg
变量为
做一个 ssh make。从:help makeprg
用于“:make”命令的程序。请参阅 |:make_makeprg|。
该选项可能包含“%”和“#”字符,它们被扩展为
当前文件名和备用文件名。 |:_%| |:_#|
环境变量被扩展|:set_env|。请参阅|选项反斜杠|
关于包含空格和反斜杠。
请注意,一个“|”必须转义两次:一次用于“:set”,一次用于
命令的解释。当您使用名为的过滤器时
“myfilter”这样做:
:set makeprg=gmake\ \\\|\ myfilter
可以给出(甚至多次)占位符“$*”来指定
其中将包含参数,例如:
:set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
无法从 |modeline| 设置此选项或在|沙箱|中,对于
安全原因。