我正在我的Windows机器上进行开发工作,但是我在远程Linux机器上编译.我目前所做的是在Windows上启动X服务器,在Linux机器上启动ssh,然后远程进行开发.
我想要做的是在Windows机器上编辑我的源代码,并在保存时自动将文件复制到Linux系统.我还希望我的内置编译命令能够在远程系统上执行构建.
如果它有所不同,则使用GCC将源全部置于C中.按优先级降序排列,我的桌面上有Emacs,Vi和Netbeans,并愿意为最后的手段安装另一个IDE.
这在vim中肯定是可行的.您可以在vim中使用scp://协议编辑远程文件,并设置写入本地副本的命令.您还可以更改vim使用的程序:make在您的服务器上执行ssh make.
你需要设置你的ssh-key以保持这种无痛(否则你将一直输入你的密码),但这很容易.
另一种方法是作为make命令的一部分推送到远程repos,而不是远程编辑.
编辑:
首先,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系统,Rob Flickenger撰写的"Linux Server Hacks - 100工业强度技巧和工具"一书(O'Reilly,ISBN 0-596-00461-3)给出了设置无密码ssh和scp的提示.讨论相关的安全问题.它曾经在http://hacks.oreilly.com/pub/h/66上提供,但显然该地址现在被重定向到一些"hackzine".我将根据该文章和Ben Schmidt的来文尝试总结:
(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有助于避免不断输入密码.
金斯顿冯写了另一种避免不断输入密码的方法:
为了避免每次都需要输入scp的密码,您需要在文档中设置一个非密码ssh帐户.我发现了一种更好的方法:我可以使用常规的ssh帐户,该帐户使用密码访问材料,而无需每次都输入密码.它有利于安全性和便利性.我尝试了ssh公钥授权+ ssh-agent,实现了这个,它的工作原理!以下是两个说明链接:
http://www.ibm.com/developerworks/library/l-keyc2/
http://sial.org/howto/openssh/publickey-auth/
要在远程系统上进行制作,您需要将makeprg
变量设置为执行ssh make.从:help makeprg
用于":make"命令的程序.见|:make_makeprg |.此选项可能包含'%'和'#'字符,这些字符将扩展为当前和备用文件名.|:_%| |:_#| 环境变量扩展为::set_env |.见| option-backslash | 关于包含空格和反斜杠.
注意'|' 必须转义两次:一次用于":set",一次用于解释命令.当您使用名为"myfilter"的过滤器时,请执行以下操作:
:set makeprg=gmake\ \\\|\ myfilter可以给出占位符"$*"(甚至多次)以指定参数的包含位置,例如:
:set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}无法从| modeline |设置此选项 或出于安全原因在| sandbox |中.
一种选择是使用TRAMP远程编辑软件包(内置于Emacs 22及更新版本,您可以将其安装到旧版本中).每次保存文件时,Emacs都会通过ssh(默认情况下,每个细节完全可配置)将其内容发送到Linux机器.命令喜欢M-x compile
和M-x grep
有流浪汉知道并执行远程主机上.
我会考虑为您的环境进行持续集成.这样,您可以将更改提交到源代码控制,并使linux框充当构建服务器.您可以将测试关联起来,并在构建上运行其他相关的有趣内容.
更新1:这也可能对您有用:http://metamod-p.sourceforge.net/cross-compiling.on.windows.for.linux.html(尝试对类似工具进行一些搜索也值得一试)
其他人建议使用SAMBA,这在您的Linux机器上可能不可行.一个很好的选择是在Windows机器上使用Dokan SSHFS通过SSH挂载远程目录.