首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Vim中,你最喜欢的HTML、Javascript和CSS的折叠方法(或秘密技术)是什么?

在Vim中,你最喜欢的HTML、Javascript和CSS的折叠方法(或秘密技术)是什么?
EN

Stack Overflow用户
提问于 2010-01-31 17:29:45
回答 4查看 4.5K关注 0票数 5

我使用这样的东西:1,40 fo,但我认为这不是最有效的方法。

你的是什么?

EN

Stack Overflow用户

发布于 2010-07-01 23:32:02

我几乎完全使用了foldmethod=ignore。然而,我希望忽略行的愿望默认为上面或下面行的较高折叠级别,而不是较低的折叠级别,这激发了以下想法:

代码语言:javascript
复制
" 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不想查看前面的行,只想看后面的行。

票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2171176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档