我有一个文件,下面是内容。
一个 一个 一个 一个 一个 一个 一个 一个 一个 。 。 。 一个 一段代码...... 一个 一个 一个 。 。 甲
我想在vim中使用折叠
这样的东西通过折叠重复的线条来创建2个折叠。 这应该在我打开文件时自动发生。是否有可能在vimrc中进行?
答案 0 :(得分:2)
这个:help fold-expr
:
setlocal foldenable foldmethod=expr
let &l:foldtext = 'printf("+-%s %d times: %s", v:folddashes, (v:foldend - v:foldstart + 1), getline(v:foldstart))'
let &l:foldexpr = 'getline(v:lnum) ==# getline(v:lnum + 1) && v:lnum < line("$") ? 1 : (getline(v:lnum - 1) ==# getline(v:lnum) ? "<1" : 0)'
答案 1 :(得分:1)
应该可以使用setlocal foldmethod=expr
来编写自己的函数:
setlocal foldmethod=expr
setlocal foldexpr=CustomFold(v:lnum)
function! CustomFold(lnum)
if getline(a:lnum) == getline(a:lnum-1) || getline(a:lnum) == getline(a:lnum+1)
return '1'
endif
return '0'
endfunction
然而,这是未经测试的,您不希望对所有文件执行此操作。但它应该指向正确的方向。它也不会100%符合您的标准,但一旦您遇到特定问题,您可以随时再次询问