ファイルを変更したい場合は、rampion's solutionのために行きます。
ファイルを変更したくない場合(または変更できない場合)は、折り畳まれたテキストを表示する方法と方法を選択できるカスタム折り畳みで再生できます。例えば:
" {rtp}/fold/css-fold.vim
" [-- local settings --] {{{1
setlocal foldexpr=CssFold(v:lnum)
setlocal foldtext=CssFoldText()
let b:width1 = 20
let b:width2 = 15
nnoremap <buffer> + :let b:width2+=1<cr><c-l>
nnoremap <buffer> - :let b:width2-=1<cr><c-l>
" [-- global definitions --] {{{1
if exists('*CssFold')
setlocal foldmethod=expr
" finish
endif
function! CssFold(lnum)
let cline = getline(a:lnum)
if cline =~ '{\s*$'
return 'a1'
elseif cline =~ '}\s*$'
return 's1'
else
return '='
endif
endfunction
function! s:Complete(txt, width)
let length = strlen(a:txt)
if length > a:width
return a:txt
endif
return a:txt . repeat(' ', a:width - length)
endfunction
function! CssFoldText()
let lnum = v:foldstart
let txt = s:Complete(getline(lnum), b:width1)
let lnum += 1
while lnum < v:foldend
let add = s:Complete(substitute(getline(lnum), '^\s*\(\S\+\)\s*:\s*\(.\{-}\)\s*;\s*$', '\1: \2;', ''), b:width2)
if add !~ '^\s*$'
let txt .= ' ' . add
endif
let lnum += 1
endwhile
return txt. '}'
endfunction
私は運動などのフィールドのソートを残します。ヒント:リスト内のv:foldstart + 1とv:voldendの間にあるすべての行を取得し、リストをソートして文字列を作成します。
+1質問に感謝します。猛烈な答えから多くを学んだ! –
私の答え[下記](http://stackoverflow.com/a/10797846/254635)で私が提案するコマンドを見てください。答えのコメントは大歓迎です! –