【发布时间】:2023-03-23 04:26:01
【问题描述】:
Vim 可以折叠 Ruby 代码,但不能折叠 cmets。
在 .vimrc 中添加这个以将 foldmethod 更改为 cmets 后,我无法再折叠代码。
autocmd FileType ruby,eruby
\ set foldmethod=expr |
\ set foldexpr=getline(v:lnum)=~'^\\s*#'
如何配置 Vim 以折叠 cmets 和代码?
【问题讨论】:
Vim 可以折叠 Ruby 代码,但不能折叠 cmets。
在 .vimrc 中添加这个以将 foldmethod 更改为 cmets 后,我无法再折叠代码。
autocmd FileType ruby,eruby
\ set foldmethod=expr |
\ set foldexpr=getline(v:lnum)=~'^\\s*#'
如何配置 Vim 以折叠 cmets 和代码?
【问题讨论】:
在我最近的 Vim 7.3.823 快照中,$VIMRUNTIME/syntax/ruby.vim(2009 年 12 月 2 日版本)具有 Ruby 构造和注释块的折叠功能。
随便放
:let g:ruby_fold = 1
进入~/.vimrc。 (并确保您没有名为 ruby_no_comment_fold 的变量。)
【讨论】:
您可以使用foldmethod=marker 并添加{{{ / }}} 标记(或您选择的其他标记)来指示折叠的开始和结束位置。
您还可以修改定义 ruby 语法突出显示的文件,以调整它认为适合使用 foldmethod=syntax 折叠的内容。
第三种选择是开发一个更复杂的例程以用于foldmethod=expr。例如,我使用定义为here 的vim 函数来定义如何折叠ruby 代码。它自动定义模块、类和方法的折叠以及紧接在它们之前的任何注释行;它支持折叠其他部分的标准折叠标记。它与foldexpr=ruby#MethodFold(v:lnum) 一起使用。
更多关于折叠表达式应该如何表现的信息可以通过:help fold-expr 找到。还有一个不错的vimcast about that。
【讨论】:
将foldmethod 设置为indent 将根据缩进级别折叠行,
无论该行是注释还是代码。
:set foldmethod=indent
:help fold-indent
【讨论】:
【讨论】: