我不知道如何vim摺疊asciidoc,但我認爲新的部分開始於##(或==,從短暫看你提供的鏈接判斷),[id = ...]提供有關該部分的更多信息。 所以你可以看看Steve Losh's markdown folding和:h fold-expr
。 所以在這裏是用於降價摺疊修改後的代碼:
function! Fold_askiidoc(lnum)
let l1 = getline(a:lnum)
if l1 =~ '^\s*$'
" assume sections are separated by blank lines
return '0'
endif
" check next line
let l2 = getline(a:lnum+1)
if l2 =~ '^#'
" next line starts with hashes (or '=', or any symbol)
" number of hashes specifies indent level
return '>'.matchend(l2, '^#\+')
else
" otherwise keep previous foldlevel
return '='
endif
endfunction
setlocal foldexpr=Fold_test(v:lnum)
setlocal foldmethod=expr
它檢查每一行,如果它是空白的,假設它是一個部分的結尾。如果下一行以#開始,則表示摺疊從當前行開始。 #的數量指定摺疊級別。 如果您只希望爲特定的行(如id = [''])添加字符串比較,它會摺疊段標題之前的任何非空行。
您可以將它保存到$HOME/.vim/after/ftplugin/asciidoc.vim
。我不確定文件類型,如果它存在或您必須單獨創建它。從那裏它應該每次打開特定文件時自動加載。或者您可以將函數放入您的vimrc
並指定 setlocal foldexpr = Fold_test(v:lnum) setlocal foldmethod = expr 作爲此文件類型的自動命令。