有没有办法在Vim中折叠所有多行Ruby注释?

有没有办法在Vim中折叠所有多行Ruby注释?,ruby,vim,comments,macvim,Ruby,Vim,Comments,Macvim,我正在开发RubyGem,我希望能够隐藏文件中的所有文档注释,因为它们更适合使用库的人,而不是阅读或编写代码的人。我看到了注释的价值,但当我在编写代码时,它们会在视觉上分散我的注意力 在MacVim中,我可以通过选择代码行并单击Tools>Folding>Create fold,手动折叠代码行,但是有没有一种方法可以使用某种快捷方式自动隐藏所有注释 例如,以下代码: # Returns a 2D array for Rails select helper options. # Also

我正在开发RubyGem,我希望能够隐藏文件中的所有文档注释,因为它们更适合使用库的人,而不是阅读或编写代码的人。我看到了注释的价值,但当我在编写代码时,它们会在视觉上分散我的注意力

在MacVim中,我可以通过选择代码行并单击
Tools>Folding>Create fold
,手动折叠代码行,但是有没有一种方法可以使用某种快捷方式自动隐藏所有注释

例如,以下代码:

  # Returns a 2D array for Rails select helper options.
  # Also used internally for Formtastic support
  #
  # ==== Example
  #  # Create an Enum with some elements
  #  class Priority < ClassyEnum::Base
  #  end
  #
  #  class Priority::Low < Priority; end
  #  class Priority::ReallyHigh < Priority; end
  #
  #  Priority.select_options # => [["Low", "low"], ["Really High", "really_high"]]
  def select_options
    map {|e| [e.text, e.to_s] }
  end

我想您可能想使用
vim
foldmethod
设置。很抱歉回答有点模糊,但我这里没有MacVim,所以你应该自己调整我建议中的目录/文件名

首先,在命令模式下尝试
:setlocal foldmethod=syntax
,以仅在当前文件中启用折叠。如果有效,您已经安装了所有必备组件(即
ruby.vim
语法文件)。请尝试将
let ruby_fold=1
添加到
.vimrc
文件中。后者应该支持对所有ruby文件进行折叠(或者,对于所有支持折叠的文件类型,您也可以使用
set foldmethod=syntax
明确地将折叠设置为true)

现在您可以在文件系统上找到
ruby.vim
,对其进行调优。提示一下,在Linux发行版上,它位于
/usr/share/vim/vim73/syntax/ruby.vim
。“我的语法文件”允许折叠所有“可能”折叠的内容(例如函数、方法等)。将原始文件复制到
$HOME/.vim/syntax
目录,并根据需要进行调整。浏览它(例如,通过搜索
折叠
)并删除不希望应用折叠的
折叠
关键字。语法文件中的名称是不言自明的,所以在这里您不会遇到麻烦

重新启动vim,享受您的折叠体验。希望能有所帮助。

您可以尝试:


问题是,这种方法将成为唯一的折叠选项,因此这可能有点极端。

我在中输入了这些选项,但什么也没有发生。还有什么我需要做的吗?我在发布我的答案之前已经试过了,我可以说它在这里起作用了:评论用
zc
折叠,用
zo
展开,用
za
切换。这很晚了,但对我来说很有效!我正在使用
zM
关闭所有折叠,并使用
zR
打开它们。发现此时的这些命令与您的问题无关,但您不应该使用菜单:Vim有非常好的创建/关闭/打开/移除和切换折叠的默认映射<代码>:h folds将告诉您有关Vim中折叠的所有信息。
  def select_options
    map {|e| [e.text, e.to_s] }
  end
:set fdm=expr
:set fde=getline(v:lnum)=~'^\\s#'?1:getline(prevnonblank(v:lnum))=~'^\\s#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0