【问题标题】:How to enable ruby methods visualizing in vim如何在 vim 中启用 ruby​​ 方法可视化
【发布时间】:2010-12-19 11:48:34
【问题描述】:

已经用谷歌搜索了这个问题,但什么也没找到 - 在这种情况下,我可能不知道如何正确定义搜索关键字。

在开发 Ruby on Rails 应用程序时,我喜欢在 vim 中使用折叠功能。并且我的 foldcolumn 设置为 4。但是它对 ruby​​ 方法的开始和结束的可视化并不是那么简单和明显(“-” - “def”,“|” - “end”):

-def foo
      bar = 1
|end

问题是 - 是否有任何 vim 插件,它会像在 TextMate (1) 中那样在每个“def”和“end”附近显示标记(箭头或 stmh)?

v def foo
      bar = 1
^ end

另外,由于我在 vim/ruby 方面没有太多经验,也许还有另一种更优雅的方法来检查所有 def-end 对是否在特定文件中关闭? (matchit.vim 不太适合这种需求) 我希望有比在控制台中阅读“语法错误”更方便的方法来捕捉丢失的“结束”:)

【问题讨论】:

    标签: ruby vim textmate


    【解决方案1】:

    我不确定它是否正是您所需要的,但您是否尝试过“foldcolumn”选项?例如,使用:

    :set foldcolumn=4
    

    你会得到这样的东西:

    -   def foo
    |       bar = 1
    |   end
    
    -   def foo2
    |       bar = 2
    |-      if x == 1
    ||          bar = 3
    ||      end
    |   end
    

    请参阅:help 'foldcolumn' 了解更多信息。请注意,如果您的 Vim 支持鼠标,您可以单击 - 标志关闭折叠。

    编辑

    如果你不喜欢 fold 方法,你可以使用符号(假设你的 Vim 启用了符号)。试试这样的:

    command! RubySigns call RubySigns()
    " Optional:
    au BufReadPost *.rb call RubySigns()
    function! RubySigns()
        sign define ruby_end text=^
        sign define ruby_def text=v
        sign unplace *
        g/^\s*\(def\|class\|begin\)\>/exe 'sign place '.line('.').' line='.line('.').' name=ruby_def buffer='.bufnr('%')
        g/^\s*end\>/exe 'sign place '.line('.').' line='.line('.').' name=ruby_end buffer='.bufnr('%')
    endfunction
    

    它可能并不完美(我不知道 ruby​​),但它可能会给你一些入门的东西。

    【讨论】:

    • 希望标志方法会更有用。
    猜你喜欢
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2011-04-16
    • 2014-08-16
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2018-08-09
    相关资源
    最近更新 更多