2010-01-31 6 views

Respuesta

8

Uso foldmethod=marker y tengo asignaciones para ingresar <!-- {{{ --> y <!-- }}} --> donde quiero que el pliegue comience y termine. Pongo el marcador de inicio en la línea con la etiqueta de bloque de apertura como:

<div id="topmenu"> <!-- {{{ --> 

por lo que cuando se dobla inmediatamente me veo cuál es el pliegue contiene sin la necesidad de añadir comentario adicional.

Para CSS es incluso más fácil, solo uso foldmarker={,} y todas las definiciones se doblan automágicamente mostrándome una lista muy clara de todas las clases, etiquetas e identificadores que puedo abrir cuando los necesito. En realidad todos mis archivos CSS tienen esta línea al final:

/* vim: set fdm=marker fmr={,}: */ 

También puede seleccionar visualmente la región que desea doblar y presionar zf si lo prefiere.

+0

Eso suena bien, ¿cómo estableciste diferentes marcadores para tanto HTML y CSS? – alexchenco

+0

Foldmarkers son diferentes ya que mantengo HTML y CSS estrictamente en archivos separados. –

+0

/* vim: set fdm = marcador fmr = {,}: */<--- ¿esto llama al método de plegado de Vim solo para el archivo CSS individual con esta línea? – alexchenco

3

Mejor método de plegado para vim para html: use haml instead. La mejor opción para css: use sass instead.

En serio. Lo hacen mucho más compacto.

+1

No es una respuesta a la pregunta, pero son buenas ideas. Por curiosidad, ¿qué es el soporte de resaltado y plegado de sintaxis como en Vim para SASS y HAML? – Jay

+0

¡Hola HAML y SASS lucen geniales! ¿Hay mucha gente usándolos? – alexchenco

+0

Desafortunadamente, no resolverá el problema de edición de archivos escritos por otros autores. – michael

5

Me tapa entre guión y el marcador con esto en mi vimrc ..

let g:FoldMethod = 0 
map <leader>ff :call ToggleFold()<cr> 
fun! ToggleFold() 
    if g:FoldMethod == 0 
     exe 'set foldmethod=indent' 
     let g:FoldMethod = 1 
    else 
     exe 'set foldmethod=marker' 
     let g:FoldMethod = 0 
    endif 
endfun 

sangría funciona bien para la mayoría html embellecido pero yo uso marcador para la gran mesa plegable de estilo declarativo de los contenidos de los documentos. Dependiendo de quién haya escrito el archivo, uno funcionará mejor que el otro, por lo que necesita acceso rápido a ambos.

+1

Puede hacer eso sin la variable global al marcar 'if & foldmethod == 'marker'' en su lugar. – eswald

1

He usado foldmethod=ignore casi exclusivamente. Sin embargo, mi deseo de haber ignorado por defecto líneas al mayor nivel de pliegue de la encima o debajo de las líneas, en lugar de la inferior, inspirado lo siguiente:

" Default foldmethod 
" Similar to fdm=indent, but lets blank and comment lines default high. 
set fen fdm=expr fdi= 
set foldexpr=EswaldFoldLevel(v:lnum) 

function! EswaldFoldLevel(lnum) 
    let ignored = '^\s*\([#/*]\|$\)' 
    if getline(a:lnum) !~ ignored 
    " In the general case, just use the indent level. 
    " It would be nice if it didn't skip several levels... 
    return indent(a:lnum)/&sw 
    endif 

    let previndent = 0 
    let prevnum = a:lnum - 1 
    while prevnum > 0 
    if getline(prevnum) =~ ignored 
     let prevnum = prevnum - 1 
    else 
     let previndent = indent(prevnum)/&sw 
     break 
    endif 
    endwhile 

    let nextindent = 0 
    let maxline = line('$') 
    let nextnum = a:lnum + 1 
    while nextnum <= maxline 
    if getline(nextnum) =~ ignored 
     let nextnum = nextnum + 1 
    else 
     let nextindent = indent(nextnum)/&sw 
     break 
    endif 
    endwhile 

    return max([previndent, nextindent]) 
endfunction 

(Perdón por el resaltado de sintaxis ...)

Lo uso como un complemento personalizado, dejando que los tipos de archivos individuales lo anulen. Python, por ejemplo, no quiere ver las líneas anteriores, solo las siguientes.

Cuestiones relacionadas