2009-11-23 17 views
2

中可视化已经搜索了这个问题,但什么都没发现 - 也许我不知道如何在这种情况下正确地定义搜索关键字。如何启用ruby方法在vim

我喜欢在我开发Ruby on Rails应用程序时在vim中使用折叠。而我的折叠列设置为4,但其开始和红宝石方法结束的可视化不是那么简单和明显的(“ - ” - “高清”,“|” - “端”):

-def foo 
     bar = 1 
|end 

的问题是 - 没有任何插件VIM,将显示附近所有的标志(箭头或stmh)“高清”和“结束”就像是在TextMate中(1)做了什么?

v def foo 
     bar = 1 
^ end 

而且,由于我没有在vim /红宝石太多的经验,也许还有另一种更优雅的方式来检查所有的高清终端对在一个特定的文件关闭? (matchit.vim对这个需求并不是很舒服) 我希望有更方便的方法来捕捉丢失的“结束”,而不是阅读控制台中的“语法错误”:)

回答

2

我不确定它是否相当你需要什么,但你有没有尝试'foldcolumn'选项?例如,对于:

:set foldcolumn=4 

你会得到这样的事情:

- def foo 
|  bar = 1 
| end 

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

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

编辑

如果你不喜欢的折叠方法,您可以使用标志(假设你的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 

它可能不是完美的(我不知道红宝石),但它可能给你的东西开始。

+0

谢谢,但我已经在我的问题提到的折叠列 – lipry 2009-11-23 17:45:24

+0

啊,不好意思:应该读它更仔细... – DrAl 2009-11-23 19:12:23

+0

希望的迹象方法将更加有用。 – DrAl 2009-11-24 08:33:43