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

时间:2013-02-09 23:25:45

标签: ruby vim comments macvim

我正在开发一个Ruby gem,我希望能够隐藏文件中的所有文档注释,因为对于使用该库的人而言,这些注释比阅读或编写代码更多。我看到了评论的价值,但是当我处理代码时,他们在视觉上让我分心。

在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

将显示为:

  def select_options
    map {|e| [e.text, e.to_s] }
  end

2 个答案:

答案 0 :(得分:3)

您可以尝试this method

:set fdm=expr
:set fde=getline(v:lnum)=~'^\\s#'?1:getline(prevnonblank(v:lnum))=~'^\\s#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0

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

答案 1 :(得分:0)

我想您希望使用vim的{​​{1}}设置。对不起有点模糊的回答,但我这里没有MacVim,所以你应该自己调整目录/文件名。

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

现在,您要在文件系统上找到set foldmethod=syntax来进行调整。为了提示,在Linux发行版上它位于ruby.vim。我的语法文件可以折叠所有“可能”折叠的东西(例如函数,方法等)。将原始文件复制到/usr/share/vim/vim73/syntax/ruby.vim目录并根据需要进行调整。浏览它(例如,通过搜索$HOME/.vim/syntax)并删除您不希望应用折叠的fold关键字。语法文件中的名称不言自明,因此您不会遇到麻烦。

重新启动vim并享受折叠。希望有所帮助。