“执行并更新”#=>'标记'用于VIM
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
以下是CiaránWalsh的博客对此功能的描述:
另一个值得了解的工具是“Execute and Update'#=>'Markers'命令(默认情况下,在^⇧⌘E上)。 要使用它,请添加一些注释标记(在#中有一个代码片段将为您插入这些标记)到行的结尾,以便查看结果并触发该命令。 TextMate将运行您的代码并在注释中报告标记行的结果。 此功能非常适用于在线发布的代码,因为它显示了来源和结果。
使用xmpfilter
的xmpfilter。
好像把它写成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()
。
一个限制是它用一个标记两次评估每一行。 所以标记线不应有副作用。
链接地址: http://www.djcxy.com/p/50093.html