2010-09-29 23 views
7

Hay surprisingnumber de questions en thissubject, sin embargo, algunos de ellos no responden lo que quiero.¿Cómo sangrado exclusivamente un bloque de código en vim?

que tienen un bloque de código como sigue:

void foo { 

somecodehere 
morecode 
... 

} 

Como se puede ver las tripas de mi función son guiones en el mismo nivel que el resto de mi bloque de código. Lo que hago actualmente es >% al final de mi bloque (es decir, }) que sangra todo el bloque, incluidas las líneas con mis llaves.

Lo que me gustaría hacer es un comando similar que sangra cada línea entre excluyendo mis llaves.

No puedo comenzar a decirte cuánto tiempo esto me salvaría.

+1

Use '=' para formatear (no sangría, pero para mí da los mismos o mejores resultados). A menos que no te guste la forma en que vim formatea tu código. 'gg = G' formateará todo el archivo. – FrustratedWithFormsDesigner

+0

@Frustrated no es exactamente lo que estoy buscando (ya que a veces no quiero meterme con el formateo interno), pero también es útil saberlo. Entonces +1 a usted señor – tzenes

Respuesta

11

En lugar de asignar algo nuevo, >i{ parece hacer lo que quiere aquí, pero mueve el cursor.

+0

+1 - incluso más corto que mi respuesta –

+0

Estoy bien moviendo el cursor – tzenes

+0

Slick. Eso definitivamente va en mi escondite de Vim-ness. – alesplin

1

inserción

map sb v%><<%<< 

en su .vimrc (reemplace 'sb' con cualquier combinación de teclas que desea). desplaza toda la función hacia la derecha y luego la primera y la última línea vuelven a la izquierda. Funciona en la primera o en la última línea de un bloque

2

coloque el cursor dentro del bloque que desea sangrar, y escriba vi{>

v entra en modo visual.

i{ selecciona todo el interior de la íntima {} bloquear

> guiones del bloque visual y sigue en modo normal

continuación, puede utilizar '' para mover el cursor de nuevo a su línea original.

N.B. si también desea sangrar los frenillos, reemplace i{ con a{.

1

Uso marcas que a veces son molestas pero funciona.
Ir a la última línea de su función (la línea por encima de la})
ma Crear marca 'a'
volver a la parte superior de la función y hacer esto.

> ` un

que apenas dice guión en un nivel hasta que llega a marcar una.

Cuestiones relacionadas