2009-05-11 11 views
7

Normalmente edito archivos RUBY en VIM. Quiero que los métodos (def ... end) se doblen. ¿Podría ayudarme a definir la sintaxis de plegado?¿Qué doble debo usar en VIM?

+0

¿Puedes aclarar tu pregunta? No veo la conexión entre el ancho de cambio, el rubí y la sintaxis de plegado? Parecen tres elementos sin relación para mí. –

+0

Sí, no puedo verlo también, aclare ;-) –

Respuesta

18

Asumiendo que ya tiene la sintaxis de Ruby destacando configurada y funciona, utilice el modo de syntax para el plegado:

set foldmethod=syntax 

Esto le dará pliegues en class .. end y def .. end, etc.

3

Me gusta tener todo doblado por defecto, y esto aquí le permitirá modificar un montón de cosas relacionadas con el plegado. Hago principalmente codificación de Perl y C++ y creo que funciona bien con eso. Plegar y desplegar se asigna a la tecla de espacio.

Esto es lo que he de ir en mi vimrc:

" Folding stuff 
    hi Folded guibg=red guifg=Red cterm=bold ctermbg=DarkGrey ctermfg=lightblue 
    hi FoldColumn guibg=grey78 gui=Bold guifg=DarkBlue 
    set foldcolumn=2 
    set foldclose= 
    set foldmethod=indent 
    set foldnestmax=10 
    set foldlevel=0 
    set fillchars=vert:\|,fold:\ 
    set foldminlines=1 
" Toggle fold state between closed and opened. 
    " 
    " If there is no fold at current line, just moves forward. 
    " If it is present, reverse it's state. 
    fu! ToggleFold() 
    if foldlevel('.') == 0 
     normal! l 
    else 
     if foldclosed('.') < 0 
      . foldclose 
     else 
      . foldopen 
     endif 
    endif 
    echo 
    endf 

" Map this function to Space key. 
    noremap <space> :call ToggleFold()<CR> 
0

Creo que se pone el cursor en la primera línea y luego zfnj donde n es el número de líneas a veces (por lo que a veces 10 líneas que woudl zf10j) Creo que también reconocerá la sintaxis así como en PHP I do zf} para doblar al paréntesis de cierre. No codifico en Ruby, así que no sé si esto funciona en Ruby.

A partir de ese momento, para alternar, zo se abrirá y zc se cerrará.