2009-11-23 81 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