Похоже, что не должно быть слишком сложно написать это как функцию 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()
.
Одно ограничение состоит в том, что он оценивает каждую строку с маркером дважды.Поэтому линии с маркерами не должны иметь побочных эффектов.