Si desea cambiar el archivo, vaya para rampion's solution.
Si no desea (o no puede) cambiar el archivo, puede jugar con un plegado personalizado, ya que permite elegir qué y cómo mostrar el texto plegado. Por ejemplo:
" {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
dejo la clasificación de los campos como el ejercicio. Sugerencia: obtenga todas las líneas entre v: foldstart + 1 y v: voldend en una lista, ordene la lista, construya la cadena, y eso es todo.
+1 gracias por la pregunta. aprendí mucho de la respuesta de rampion! –
Por favor, eche un vistazo al comando que propongo en mi respuesta [a continuación] (http://stackoverflow.com/a/10797846/254635). Los comentarios a la respuesta son bienvenidos! –