REPL控制台在特定对象的上下文中运行时如何使用interactive_editor

时间:2015-05-14 20:02:16

标签: ruby vim irb

我正在尝试以编程方式启动控制台,以便:

我试图满足的两个条件似乎是相互排斥的。下面我编写一个脚本,用于激活绑定到[1,2,3]列表上下文的REPL。

# test.rb
require 'ripl'
require 'interactive_editor'

Ripl.start :binding => [1,2,3].instance_eval { binding }

如果您运行ruby test.rb,则可以看到您处于[1,2,3]的上下文中:

>> self
=> [1, 2, 3]
>> map { |a| a * 2 }
=> [2, 4, 6]

但是如果你尝试使用interactive_editor的功能:

>> vim "something"
=> [1, 2, 3]

这最后一行会激活vim并实际写入文件“某事”(没有明确保存):

# something
---
- 1
- 2
- 3

我有什么方法可以解决这个问题吗?我应该将此作为interactive_editor Gem上的问题提交吗?当我使用IRB以及interactive_editorirbtools时会出现同样的错误。

我的猜测是,更改上下文会使interactive_editor很难解析其对象定义,但我不确定这是如何工作的。

提前致谢,如果我遗漏了重要信息,请告诉我。

  1. ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin14.0]
  2. iteractive_editor (0.0.10)
  3. irbtools (2.0.1, 1.7.1)
  4. ripl (0.7.1)
  5. ripltools (0.7.0)
  6. 我正在运行OS X Yosemite 10.10.3,但已设法在其他几个Linux机器上复制此问题。

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法:

def edit(*args)
  system("$EDITOR #{args.join(' ')")
end

这仍然无法解释为什么我无法使用此示例与interactive_prompt一起使用。