我正在寻找一种方法,将折叠的文件保存到新文本文件中,并关闭所有折叠。换句话说,正如我在屏幕上看到的那样。
有可能吗?
(我将不得不稍后打印代码,其部分与我的目的无关;折叠机制对此非常理想,我的另一种选择是手动将“[X行省略]”添加到保存的文本中。 )
答案 0 :(得分:3)
根据需要折叠文本,然后使用:TOhtml
转换为HTML文件。这将保留您的折叠。如果您需要它作为纯文本文件,您可以进行后期处理,例如使用w3m,它将HTML呈现为文本并允许将其转储到文本文件中。
答案 1 :(得分:2)
我曾经创建了一个saves all folds to a new buffer的脚本。
答案 2 :(得分:2)
这是一个自定义:RenderClosedFolds
命令,它将修改当前缓冲区/范围。它还会尝试保持原始折叠的Folded
突出显示。
":[range]RenderClosedFolds
" Replace all lines currently hidden inside closed folds
" with a single line representing 'foldtext'.
function! s:RenderClosedFolds()
if line('.') == foldclosed('.')
let l:result = foldtextresult('.')
call setline('.', l:result)
execute printf('syntax match renderedFold "\V\^%s\$" containedin=ALL keepend', escape(l:result, '"\'))
else
delete _
endif
endfunction
command! -bar -range=% RenderClosedFolds
\ highlight def link renderedFold Folded |
\ let g:ingocommands_IsEntireBuffer = (<line1> == 1 && <line2> == line('$')) |
\ if g:ingocommands_IsEntireBuffer | syntax clear renderedFold | endif |
\ let g:save_foldmethod = &l:foldmethod | setlocal foldmethod=manual |
\ execute '<line1>,<line2>folddoclosed call <SID>RenderClosedFolds()' |
\ if g:ingocommands_IsEntireBuffer | setlocal nofoldenable | endif |
\ let &l:foldmethod = g:save_foldmethod | unlet g:save_foldmethod g:ingocommands_IsEntireBuffer