如何打开一个包含当前 Eclipse 编辑器文件的外部 Vim 编辑器?

32

我不是在寻找Eclipse的“Vim插件”。相反,我只想要一个键盘快捷方式,在新的Vim实例中打开当前的Eclipse文件。

有没有快速简便的方法可以做到这一点?

3个回答

53

有两种方法可以实现这个功能,一种是规范的方式,另一种是hack的方式。首先:

规范的方式

  1. Window > Preferences...展开General > Editors > File Associations.
  2. 选择您想要编辑的文件类型
  3. 点击“Associated editors”框旁边的“Add”按钮。
  4. 点击“External programs”和“Browse...”,然后找到gvim,或者输入/usr/bin/gvim,或者通常使它进入gvim。

现在,该类型的文件应该在外部vim实例中显示。很棒,对吧?但这并不能解决将当前缓冲区推送到vim的问题。


hack的方式

相反,我们将把vim设置为“构建工具”,并让eclipse将当前文件发送给它作为参数。这可能会对您的项目设置产生一些不受影响的副作用,但是如果您遇到诸如意外重建文件之类的问题,请仔细查看它们。

  1. Run > External Tools > External Tools Configuration...
  2. 左侧选择“Program”,然后单击“New”图标。
  3. 为名称输入“Send to vim”
  4. 为位置输入“/usr/bin/gvim”(或您的路径)
  5. 在“Working Directory”下输入${project_loc}(这是表示您的项目顶部目录的变量)
  6. 在参数下输入${resource_loc}(这表示当前资源的路径)
  7. 在“Build”选项卡上,取消选中“Launch之前构建”(除非您真的想那样)
  8. 在常规选项卡上,在“Display in favorites menu”下勾选“External Tools”

现在您可以使用菜单将文件发送到vim。

Run > External Tools > Send to vim

如果你想要更加高级一些,甚至可以在工具栏中添加一个按钮。

请注意,这里的示例使用的是gvim。如果您想使用终端vim,您需要根据您使用的终端适当地调用它。对于xterm,这将是/usr/bin/xterm -e /usr/bin/vim,而不是/usr/bin/gvim


11
第六步 --servername ECLIPSE --remote-tab "${resource_loc}" 将保持 Eclipse 中的所有文件在同一个窗口实例中。 - cmcginty
12
您可以使用“The Hack”方法进行键盘绑定:窗口 -> 首选项 -> 通用 -> 键 -> 运行最近启动的外部工具。 - cmcginty
1
酷,非常感谢这个提示!顺便说一句,我不会称它为黑客行为,因为这是按照Eclipse的意图来使用它,不是吗?Casey,很好的改进,我们只需要添加一些引号来支持文件名中带有空格的情况:--servername ECLIPSE --remote-tab "${resource_loc}"。 - user1061790
5
如果你没有已经运行 ECLIPSE 服务器名的 Vim 实例,使用 --remote-tab-silent 替代 --remote-tab 可以消除错误信息。 - jmohr
步骤5。我喜欢将工作目录设置为${container_loc},以将其设置为$resource_loc的目录。 - Bathz
显示剩余6条评论

2

您也可以创建一个小的shell脚本,它只是在一个命名的vim实例中打开传递给它的任何选项。例如,我使用的shell脚本只是:

#!/bin/bash

gvim --servername eclipse --remote-tab-silent "$@"

然后将脚本设为可执行,并按照sleepynate所描述的规范方法,使用您的脚本作为外部编辑器。


1

我知道有一个高赞的答案,但我想说在OSX上我发现最方便的方法是使用QuickCursor让我在macVim中打开任何文本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接