远程编程

2024-02-25

我在 Windows 机器上进行开发工作,但在远程 Linux 机器上进行编译。我目前所做的是在 Windows 上启动 X 服务器,通过 ssh 进入 Linux 机器,然后进行远程开发。

我想做的是在 Windows 计算机上编辑源代码,并在保存时自动将文件复制到 Linux 系统。我还希望我的内置编译命令能够在远程系统上执行构建。

如果有区别的话,源代码全部是 C 语言,使用 GCC。按照偏好的降序排列,我的桌面上有 Emacs、Vi 和 Netbeans,并且愿意安装另一个 IDE 作为最后的手段。


这在 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| 设置此选项或在|沙箱|中,对于 安全原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

远程编程 的相关文章

  • 如何在 Emacs à la Vim 中设置标记?

    I d like to be able to set multiple marks in Emacs like Vim does In Vim you might press m b and that would set a mark at
  • 有没有办法在 (g)Vim 中突出显示多个搜索?

    我想在 Vim gVim 中搜索多个字符串 并用不同的颜色突出显示它们 有没有办法用开箱即用的 Vim 或插件来做到这一点 在 vim 编辑器中突出显示多个单词有两种简单的方法 进入搜索模式 即输入 然后输入 v后面是您要搜索的单词 以 分
  • 设置自动完成以处理语义

    我在 Emacs 中的自动完成包方面遇到问题 目前我已经启动并运行了 cedet 并具有适当的自动完成功能 但自动完成包有一些奇怪的行为 它不会使用语义 参议员 的数据库 直到我显式访问包含文件并创建 C u M x bovinate 然后
  • Vim 与 tmux 相得益彰

    NERDTree 在 tmux 会话中出现问题 如图所示 当窗口被分割时也存在同样的问题 但现在我正在使用电源线 https github com Lokaltog powerline这次 Vim 状态在 tmux 中变得混乱 在图中看到状
  • VIM 分块插入

    我想在 VIM 中选定的文本块的开头插入一个哈希 Ruby 注释 我在可视模式下选择了线条 但如何对所有线条执行相同的操作 您有两个主要选择 在块视觉模式中选择 ctrl v 然后使用I沿着整个块的左侧插入相同的东西 相似地A追加 看分块运
  • 如何使用 VIM 进行 .Net 开发 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 Vim 中仅在某些上下文中启用语法隐藏?

    我想隐藏名称基于希腊符号的变量 并将它们转换为 Unicode 等效符号 类似于vim 可爱的 python https github com ehamberg vim cute python作品 例如 我有这个 syntax match
  • 用于将 PCRE 正则表达式转换为 emacs 正则表达式的 Elisp 机制

    我承认对喜好有很大的偏见PCRE http www pcre org regexps 比 emacs 好得多 如果没有其他原因 当我输入 时 我几乎总是想要一个分组运算符 当然 w 和类似的比其他等价物方便得多 但当然 期望改变 emacs
  • Vim:垂直选项卡列表可以吗?

    是否可以让 vim 的选项卡列表垂直显示在编辑器的左侧 这确实很有帮助 但我还没有找到任何可以做到这一点的插件 我对谷歌很烂吗 我同意兰迪关于选项卡使用的观点 但前段时间我也在寻找在 gvim 中添加垂直制表符的可能性 为此 您必须修改源
  • 按文件类型设置 Vim 空白首选项

    在我的工作中 我需要遵循房屋风格进行缩进 如下所示 编码 html 和 ruby 时有 2 个空格 编码 javascript 时使用制表符 建议使用 tabwidth 4 为每个文件类型指定不同的空白首选项的最佳方法是什么 方法有很多 但
  • Vim:无法让病原体加载包

    我在 Stackoverflow 和 github 等上阅读了有关此问题的其他五个问题 但一直无法解决这个问题 此时我完全迷失了 我使用的是 Ubuntu 11 10 和 Vim 7 3 这是我的 vimrc set nocp call p
  • 如何在 Emacs 中保存所有文件(或保存所有缓冲区)?

    C x C s saves only the current buffer 如何保存所有文件 或所有缓冲区 Press C x s and then choose for saving all buffers
  • 如何在 Vim 中突出显示 Bash 脚本?

    我的 Vim 编辑器自动突出显示 PHP 文件 vim file php HTML 文件 vim file html 等等 但是当我输入 vim file在里面写一个Bash脚本 它不会突出显示它 我如何告诉 Vim 将其突出显示为 Bas
  • 如何从 Bash 命令行在后台 Vim 打开另一个文件?

    我正在从使用 Gvim 过渡到使用控制台 Vim 我在 Vim 中打开一个文件 然后暂停 Vim 在命令行上运行一些命令 然后想返回到 Vim Ctrl Z 在正常模式下 暂停 Vim 并返回到控制台 fg可用于将焦点返回到 Vim job
  • 如何设置 Vim 进行 Android 开发?

    谁能描述一下用于 Android 开发的良好 Vim 设置吗 我现在使用 Eclipse 但我真的很想使用 Vim 因为它更快 而且我更喜欢它 例如 我对 Eclim 不感兴趣 我对使用哪些 Vim 插件 用于 Java 自动完成等 如何
  • 有人用CrossKylix进行真正的跨平台开发吗?

    新版本克罗斯凯利克斯 http crosskylix untergrund net 两周前更新过 即使 Kylix 已经停产很久了 但它似乎仍然被一些 Delphi 开发人员使用 有人在 Windows 和 Linux 的跨平台开发中成功使
  • GVIM可以有背景图片吗?

    我想知道是否可以将背景图像放入 gVim 中 这可以通过编程来完成吗 如果你必须的话 我建议你做以下几件事 使用合成窗口管理器 例如 Linux Windows Vista 和 Mac OS 上的 Compiz 可能有类似的工具 设置桌面背
  • 通过链接进入 git-repo,无需冗长的对话框

    In a directory I have symbolic links into a git administered directory all under Linux Every time I want to e dit such a
  • 如何使用 vim 作为“git show”编辑器?

    全部如所述如何使用 vim 作为 git log 编辑器 https stackoverflow com questions 16666009 how do i use vim as git log editor不适用于 git show
  • 向上移动箭头不突出显示文本 emacs iterm2

    我最近有人帮忙修复M left等等 终端元箭头键绑定中的 emacs https stackoverflow com questions 10867199 emacs in terminal meta arrow keybindings 但

随机推荐