我使用这样的东西:1,40 fo,但我认为这不是最有效的方法。
你的是什么?
发布于 2010-07-01 23:32:02
我几乎完全使用了foldmethod=ignore。然而,我希望忽略行的愿望默认为上面或下面行的较高折叠级别,而不是较低的折叠级别,这激发了以下想法:
" Default foldmethod
" Similar to fdm=indent, but lets blank and comment lines default high.
set fen fdm=expr fdi=
set foldexpr=EswaldFoldLevel(v:lnum)
function! EswaldFoldLevel(lnum)
let ignored = '^\s*\([#/*]\|$\)'
if getline(a:lnum) !~ ignored
" In the general case, just use the indent level.
" It would be nice if it didn't skip several levels...
return indent(a:lnum) / &sw
endif
let previndent = 0
let prevnum = a:lnum - 1
while prevnum > 0
if getline(prevnum) =~ ignored
let prevnum = prevnum - 1
else
let previndent = indent(prevnum) / &sw
break
endif
endwhile
let nextindent = 0
let maxline = line('$')
let nextnum = a:lnum + 1
while nextnum <= maxline
if getline(nextnum) =~ ignored
let nextnum = nextnum + 1
else
let nextindent = indent(nextnum) / &sw
break
endif
endwhile
return max([previndent, nextindent])
endfunction(很抱歉语法突出显示...)
我将其用作自定义插件,让单个文件类型覆盖它。例如,Python不想查看前面的行,只想看后面的行。
https://stackoverflow.com/questions/2171176
复制相似问题