【问题标题】:Vim: Highlight keyword pairs in Ruby (def/end, do/end, etc)Vim:突出显示 Ruby 中的关键字对(def/end、do/end 等)
【发布时间】:2015-01-13 16:17:59
【问题描述】:

In one of the Eclipse-based editors that I tried out recently (I think it was RubyMine), when a Ruby keyword that either opened or closed a method or block was selected, the corresponding open/close keyword was highlighted.类似于 Vim 能够突出显示相应的开/关括号的方式。

例如,如果我选择了“def”,它将突出显示相应的“end”。它也适用于 do/end 块。

这真的很方便,尤其是对于那些冗长且有时嵌套很重的 Rspec 文件。

有人知道如何在 Vim 中实现这一点吗?

【问题讨论】:

  • 看看 ruby​​-matchit.vim - 它允许你在 def...endclass..end 和使用 % 的公司之间跳转。逻辑应该与您想要的相同。 vim.sourceforge.net/scripts/script.php?script_id=290
  • 另一个对 x...end 有用的 Vim 插件是 Tim Pope 的 endwise,它会在你开始一个需要的部分时自动插入一个 endgithub.com/tpope/vim-endwise
  • 感谢 cmets Telemachus。这些并不是我正在寻找的东西,但仍然很有帮助。 ruby-matchit 可以达到相同的目的,但如果可能的话,我更喜欢我的问题中描述的突出显示。一旦我了解更多有关 Vim 的信息,我可能会调查是否可以自己实现。
  • ++ tope 的插件(我认为 RubyMine 是基于 Inteli-J 而不是 Eclipse)。
  • 啊,是的,你是对的,它是 Intelli-J 产品。当我考虑从 Textmate (RubyMine、Aptana Studio、3rdRail、Netbeans)去哪里时,我在几天内尝试了几个 IDE,但最终还是选择了文本编辑器......

标签: ruby vim macvim


【解决方案1】:

如果您使用的是 Vim 7.3,您应该可以使用 MatchIt vim 宏。

runtime macros/matchit.vim 添加到您的 .vimrc 文件中,您应该能够使用 % 来匹配 ruby​​ 块。

您可以查看 ruby​​ 的文件类型插件,看看它会在什么之间移动。

【讨论】:

  • 完美!它比:set foldmethod=indentzc +1 好得多
【解决方案2】:

VIM (直到 7.2) 不能突出显示结束的 'if/end' 对,因为匹配设置接受单个字符(参见 :help matchpairs)。 我建议使用折叠代替,前提是您准确缩进代码:

:set foldmethod=indent

然后使用:zcza 确保您在正确的街区。

【讨论】:

    【解决方案3】:

    看起来这个 vim 插件做了括号匹配:http://vimdoc.sourceforge.net/htmldoc/pi_paren.html 您可能可以深入研究该代码以了解如何将其扩展为匹配其他内容。

    【讨论】:

    • 它不起作用,因为正如:help matchpairs所说:目前只允许单字节字符对,并且它们必须不同。
    • 是的,它说目前......但是代码将给出如何进行paren-matching的想法,然后您可以扩展它以支持多字符对是吗?这是一个开始的地方:)
    【解决方案4】:

    我在搜索相同问题的答案时发现了这个插件,它适用于基本的 ruby​​ 代码,但我没有针对 Rspec 等进行测试。

    只需通过pathogen 安装并添加let g:hl_matchit_enable_on_vim_startup = 1

    https://github.com/vimtaku/hl_matchit.vim

    【讨论】:

      猜你喜欢
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多