Textmate中Ruby的自动完成功能?

5

我非常习惯于Netbeans的自动补全功能。

在Netbeans中,当我输入一个“字符串”然后按下“点”,它会打印出String类的方法列表。

TextMate似乎没有这个功能。

你能加上这个功能吗?

不用一直使用ri/irb/在线文档,这将节省很多时间。


我来自相同的环境,现在更喜欢缺少自动补全功能。我感觉我对语言和可用特性有了更深刻的理解。 - fletcher
但不幸的是,缺少的功能并不是一种功能。当您尝试在要学习的API类之间来回跳转时,如果甚至没有内置到类和方法中的跳转功能,那么效率就不高。 - never_had_a_name
在TextMate中,类似的功能通常与bundle一起提供,即调用时查找某些API文档的命令。不幸的是,您请求的特定功能不可通过bundle-enhancements获得。因为您对API文档不感兴趣,而是对以您键入的任何内容开头的某个特定对象的方法感兴趣。由于我是用文本编辑器学习ruby的,所以我很舒适地切换到(始终打开的)IRB并先测试我的想法。是否有轻量级的IDE可用,其中包含此特定功能?知道会很好,谢谢。 :) - Florian Pilz
类似问题:http://stackoverflow.com/questions/3244982/how-to-dot-method-in-textmate 简而言之,TextMate的常见问题解答告诉您,该功能不受支持。 - Florian Pilz
你能接近这个功能的最近方法是使用Option-Esc。这将呈现出一个列表,逐步提供Esc可以提供的完成选项。但这仍然不是你所要求的功能。我在相关问题https://dev59.com/BUzSa4cB1Zd3GeqPqutK中找到了这个答案。 - Florian Pilz
3个回答

8

安装 Ruby TextMate 扩展,打开一个 Ruby 文件并输入 alt+esc 来获取自动补全功能。


3
您已经发现了文本编辑器和IDE之间的根本区别:文本编辑器编辑文本(当然!),即无结构的字符流。它不知道任何关于对象、消息、方法、mixin、模块、类、命名空间、类型、字符串、数组、哈希、数字、字面量等的信息。这很棒,因为它意味着您可以使用文本编辑器编辑任何东西,但也意味着编辑任何特定的内容比使用专门的编辑器更难。
Ruby IDE编辑Ruby程序,即一个高度结构化的对象、方法、类等语义图。这很棒,因为IDE知道组成合法Ruby程序的规则,因此它将使您无法编写非法的Ruby程序,并且它可以为您提供自动转换,以保证如果您从合法的Ruby程序开始,您将以合法的Ruby程序结束(例如自动重构)。但这也意味着您只能编辑Ruby程序。
简而言之:使用文本编辑器做您要求的事情是完全不可能的。您需要一个IDE。(注意:您当然可以在文本编辑器上构建IDE。Emacs就是一个很好的例子。但从我所读到的来看,TextMate插件API的功能不足以实现这一点。我可能是错的,因为我没有Mac,我大多数依赖于传闻。)

虽然我完全同意你的观点,但我想补充一下,当我们谈论“点操作自动完成”功能时,即使是世界上最糟糕的插件API也足以为Ruby执行此任务。对于Ruby来说,我们不需要“高度结构化的对象、方法、类等语义图”,因为没有什么可以阻止API从后台调用[public_]instance_methods来在下拉列表中显示结果。 - Aleksei Matiushkin
@mudasobwa,实际上这并不能在所有情况下为您提供完整的自动完成上下文列表。Ruby在幕后实际上非常复杂。如果它更简单就好了! - Julian Leviston

3
TM中的“equivalent”是按下Esc键,我相信。 如果您使用ruby amp TM包,则可以使Escape键“跨文件”完成。http://code.google.com/p/ruby-amp/ 祝好。 -r

是啊,真遗憾没有自动版本,嗯...? - Julian Leviston

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