2010-02-25 76 views
22

¿Hay alguna manera de sangrar una selección de líneas en vim, como tenemos en los editores de texto donde seleccionamos un grupo de líneas y presionamos la pestaña (o la pestaña Mayús) para sangrar/desenlazar el seleccionado ¿líneas? Estoy hablando de indentación general y no relacionada con la sangría del código.sangría un montón de líneas en VIM

+1

Hice un screencast sobre este tema: http://vimcasts.org/episodes/indentation-commands/ – nelstrom

+0

posible duplicado de [Indent múltiples líneas rápidamente en vi] (http://stackoverflow.com/questions/235839/ indent-multiple-lines-quickly-in-vi) – user

Respuesta

16

Use el modo visual como sugiere Peter. También puede usar X >> donde X es el número de líneas que desea sangrar. P.ej. 5 >> sangra cinco líneas desde la línea actual y hacia abajo.

+2

Una de las cosas que más hago, debido al Desbordamiento de pila y la escritura de ejemplos de código, es '> G', para sangrar desde la posición actual hasta el final del archivo. Escribo en Ruby en general, entonces, en realidad es '> G.' porque los rubyistas usan sangría de dos espacios y SO requiere cuatro, pero YMMV. –

35

Se puede seleccionar un conjunto de líneas con el modo de línea visual (a través de cambio + V) y escriba

>

y, a dedent,

<

También puede agregar argumentos numéricos Averigüe que no sangró lo suficiente? Pulse gv para volver a seleccionar su selección anterior.

Mientras se escribe en modo normal, pruebe ctrl +T o ctrl +D para sangrar o dedent.

+0

¿No debería ser 'outdent' en lugar de 'dedent'? –

+2

@Vinko debería ser, pero no :) un excedente es una sangría hacia atrás; un dedent es una sangría deshecha. quizás debería ser realmente undent. – Peter

+3

No necesita volver a seleccionar las líneas para sangrar más. Solo usa el comando de punto:> ... sangrará cuatro veces. –

3

Según lo sugerido por las otras respuestas, puede usar >. Como alternativa, puede indentar automáticamente correctamente su código seleccionando el conjunto de línea en el modo visual (usando cambio + V), y luego usando =, o el uso de == para sangrar la línea actual.

8

que utilice las siguientes asignaciones para sangrar/Unindent:

vmap <TAB> >gv 
vmap <S-TAB> <gv 

Uso TAB para aplicar sangría y shift-TAB para Unindent las líneas seleccionadas visualmente.

Si se selecciona un bloque Vim indentados/indentados lo que es correcto desde el inicio de el bloque.

+0

¡Funciona perfecto para mí también! @ MacVim –

Cuestiones relacionadas