Чем больше эксплуатирую АБТФ и markdown-файлы, тем сильнее убеждаюсь, что главным для работы со структурой (которая маркируется шарпами в начале строки) является простая генерация содержания. У меня есть удобный инструмент в виде Малой Карты, а сегодня обнаружилось тоже удобное и, на удивление, быстрое решение в виде выражения для фолдинга по заголовкам маркдауна. Я его слегка допилил до своего случая — вместо автозагрузки в примере сделал вызов по нажатию ,mf
" быстрый фолдинг для маркдауна
" http://stackoverflow.com/questions/3828606/vim-markdown-folding
function! MarkdownLevel()
let h = matchstr(getline(v:lnum), '^#\+')
if empty(h)
return "="
else
return ">" . len(h)
endif
endfunction
function! MarkFold()
setlocal foldexpr=MarkdownLevel()
setlocal foldmethod=expr
endfunction
nnoremap ,mf :call MarkFold()<CR>
На моем главном файле в почти 7млн символов длиной с полутора тысячью заголовков работает шустро — благодаря тому, что используется fold-expr
вместо очень медленного фолдинга по регулярным выражениям. Очень рекомендую.