gpt4 book ai didi

ruby - 如何在 vim 中启用 ruby​​ 方法可视化

转载 作者:太空宇宙 更新时间:2023-11-03 16:11:58 26 4
gpt4 key购买 nike

我用谷歌搜索了这个问题,但一无所获 - 也许我不知道在这种情况下如何正确定义搜索关键字。

在开发 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 不太适合这个需求)我希望有比在控制台中读取“语法错误”更方便的方法来捕捉丢失的“结束”:)

最佳答案

我不确定它是否正是您所需要的,但您是否尝试过“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

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

关于ruby - 如何在 vim 中启用 ruby​​ 方法可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1783315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com