我正在尝试以编程方式启动控制台,以便:
vim
宝石(link to GitHub)提供的工具(即interactive_editor
命令)。我试图满足的两个条件似乎是相互排斥的。下面我编写一个脚本,用于激活绑定到[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_editor
或irbtools
时会出现同样的错误。
我的猜测是,更改上下文会使interactive_editor
很难解析其对象定义,但我不确定这是如何工作的。
提前致谢,如果我遗漏了重要信息,请告诉我。
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin14.0]
iteractive_editor (0.0.10)
irbtools (2.0.1, 1.7.1)
ripl (0.7.1)
ripltools (0.7.0)
我正在运行OS X Yosemite 10.10.3,但已设法在其他几个Linux机器上复制此问题。
答案 0 :(得分:0)
我找到了解决这个问题的方法:
def edit(*args)
system("$EDITOR #{args.join(' ')")
end
这仍然无法解释为什么我无法使用此示例与interactive_prompt
一起使用。