2012-06-13 17 views
1

我认为如何报告Vim中每个折叠的第一行?

:folddoc execute v:foldstart."p" 

会的工作,但它只是重复地返回的只是一个褶皱的第一道防线。

谢谢。

+0

我觉得这就是你要找的东西 - http://stackoverflow.com/questions/4776087/finding-the-first-line-of-the-current-vim-fold –

+0

我只是试过:folddoclosed execute( GetFoldStart()。“p”),并返回每个折叠中的所有行。 – shaggyaxe

回答

3

可以使用foldclosed() 函数来检测闭合折叠的第一行。对于关闭折叠中的给定数量的线,它返回该折叠中第一行的数量 (否则,返回-1)。如果行号 等于该号码的值为foldclosed(),则该行是折线的第一行 。在Vim脚本该测试可写为

foldclosed('.') == line('.') 

因此,打印关闭的折叠的第一行中,可以使用命令

:folddoc if foldclosed('.') == line('.') | # | endif 

:folddoc exe'#'[foldclosed('.')!=line('.')] 

(使用:p命令而不是:#一行时显示行号是 无关紧要。)

+0

+1这真的很酷。 – kev