7

我通常在 VIM 中编辑 RUBY 文件。我希望方法(def...end)折叠。你能帮我定义折叠语法吗?

4

3 回答 3

18

假设您已经安装了 Ruby 语法高亮设置并开始工作,请使用syntax折叠模式:

set foldmethod=syntax

这会给你在class..enddef..end等上的弃牌。

于 2009-05-11T18:49:30.287 回答
3

我喜欢让所有东西都默认折叠,这里可以让你调整一大堆与折叠相关的东西。我主要做 Perl 和 C++ 编码,我发现它很好用。折叠和展开映射到空格键。

这是我在 vimrc 中的内容:

  " Folding stuff
  hi Folded guibg=red guifg=Red cterm=bold ctermbg=DarkGrey ctermfg=lightblue
  hi FoldColumn guibg=grey78 gui=Bold guifg=DarkBlue
  set foldcolumn=2
  set foldclose=
  set foldmethod=indent
  set foldnestmax=10
  set foldlevel=0
  set fillchars=vert:\|,fold:\
  set foldminlines=1
 " Toggle fold state between closed and opened.
  "
  " If there is no fold at current line, just moves forward.
  " If it is present, reverse it's state.
  fu! ToggleFold()
     if foldlevel('.') == 0
         normal! l
     else
         if foldclosed('.') < 0
             . foldclose
         else
             . foldopen
         endif
     endif
     echo
  endf

" Map this function to Space key.
  noremap <space> :call ToggleFold()<CR>
于 2009-05-11T18:54:43.273 回答
0

我认为您将光标放在第一行,然后是 zfnj,其中 n 是要折叠的行数(所以要折叠 10 行,您需要 zf10j)。我认为它也会识别语法,所以就像在 PHP 中我做 zf} 折叠到右括号一样。我不使用 Ruby 编写代码,所以我不知道这是否适用于 Ruby。

从那时起,要切换,zo 将打开,zc 将关闭。

于 2009-05-11T20:07:40.003 回答