VIM是否有可能重复“执行并更新”#=>'标记“用于ruby代码的TextMate功能。
我希望有类似的东西:
x = 2
class A
def a
42
end
end
x # =>
A.new.a # =>
输入一些命令......并获取
x = 2
class A
def a
42
end
end
x # => 2
A.new.a # => 42
对此功能的说明
另一个绝对值得了解的工具 是“执行和更新”#=>' 标记“命令(默认情况下为^⇧⌘E)。 要使用它,请添加一些注释标记 (#is上会有一个片段 为你插入这些)到最后 你想看到的那条线 结果然后触发 命令。 TextMate将运行您的代码 并报告标记的结果 在评论中行内联。这个 功能非常适合发布的代码 在线,因为它显示源和 结果一起。
答案 0 :(得分:3)
使用rcodetools中的xmpfilter
。
答案 1 :(得分:1)
似乎不应该把它写成Vim函数太难了。试试这个:
function! ExecuteAndUpdate()
ruby << EOF
marker = '# =>'
buf = VIM::Buffer.current
lines = File.readlines(buf.name)
bnd = binding
eval(lines.join("\n"), bnd)
lines.each_with_index do |line, i|
if line.match(/#{marker}/)
result = marker + ' ' + eval(line, bnd).inspect
buf[i+1] = line.sub(/#{marker}.*/, result).chomp
end
end
EOF
endfunction
然后:call ExecuteAndUpdate()
。
一个限制是它使用标记两次评估每一行。所以带有标记的行不应该有副作用。