是什么在Vim的于HTML,JavaScript和CSS你最喜欢的折叠方法(或秘密技术)?
题
我用的是这样的:1,40 fo
但我认为不是最有效的方式。
你叫什么名字?
解决方案
我用foldmethod=marker
并具有映射到输入<!-- {{{ -->
和<!-- }}} -->
我想要折叠开始和结束。我把开始标志上的线与所述开口块标记,如:
<div id="topmenu"> <!-- {{{ -->
所以当它折叠我立刻明白了折叠包含无需添加额外的评论。
有关CSS那就更简单了,我只是用foldmarker={,}
并且所有定义会被自动折叠向我展示,我可以当我需要他们刚打开的所有类,标签和ID的只是一个很明确的名单。其实我所有的CSS文件有这条线在最后:
/* vim: set fdm=marker fmr={,}: */
您还可以在视觉上,如果你喜欢选择要折叠的区域,然后按zf
。
其他提示
我缩进和标记物与此之间在我的vimrc翻转..
let g:FoldMethod = 0
map <leader>ff :call ToggleFold()<cr>
fun! ToggleFold()
if g:FoldMethod == 0
exe 'set foldmethod=indent'
let g:FoldMethod = 1
else
exe 'set foldmethod=marker'
let g:FoldMethod = 0
endif
endfun
缩进工作确定为最美化HTML,但我用标志物的内容风格的文件折叠大型声明表。根据谁写的文件,一个将更好地工作比其他的,所以你需要快速访问两种。
我已经使用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中,例如,想不看以前的线路,只是下面的人。
不隶属于 StackOverflow