我喜欢在开发Ruby on Rails应用程序时在vim中使用折叠。我的foldcolumn设置为4.但是它对ruby方法的开始和结束的可视化并不那么简单明了(“ - ” - “def”,“|” - “end”):
-def foo
bar = 1
|end
问题是 - 是否有任何vim插件,它会在每个“def”和“end”附近显示标记(箭头或stmh),就像在TextMate(1)中完成一样?
v def foo
bar = 1
^ end
另外,由于我在vim / ruby方面没有太多经验,或许还有另一种更优雅的方法来检查特定文件中所有的def-end对是否已关闭? (matchit.vim对这种需求不太满意) 我希望有更方便的方法来捕获丢失的“结束”而不是在控制台中读取“语法错误”:)
答案 0 :(得分: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
它可能并不完美(我不知道红宝石),但它可能会给你一些开始。