【问题标题】:"Execute and Update '# =>' Markers" for VIMVIM 的“执行和更新 '# =>' 标记”
【发布时间】:2011-01-20 21:07:14
【问题描述】:

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án Walsh’s Blog的对该功能的描述:

另一个绝对值得了解的工具 是“执行和更新'# =>' 标记”命令(默认在 ⌃⇧⌘E 上)。 要使用它,请添加一些评论标记 (#⇥ 上有一个 sn-p,它将 为您插入这些)到末尾 你想看到的行 结果然后触发 命令。 TextMate 将运行您的代码 并报告标记的结果 在 cmets 中行内联。这 功能非常适合发布的代码 在线,因为它显示了来源和 结果在一起。

【问题讨论】:

    标签: ruby vim plugins textmate


    【解决方案1】:

    使用rcodetools 中的xmpfilter

    【讨论】:

      【解决方案2】:

      似乎把它写成 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()

      一个限制是它使用标记对每一行进行两次评估。所以带标记的线条不应该有副作用。

      【讨论】:

      • 是的,我猜那将是另一个限制。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多