¿Sangra varias líneas con VIM?

42

Por ejemplo, estoy editando este código:

<html>
<body>
<script>
    var a = 10;
    a += 100;
</script>
</body>
</html>

ahora necesito sangrar la línea del script:

<html>
<body>
    <script>
        var a = 10;
        a += 100;
    </script>
</body>
</html>

¿Cómo podría hacer esto sin mover el cursor al comienzo de cada línea y presionar Tab?

wong2
fuente
En modo comando:gg=G
Prince John Wesley

Respuestas:

71

Presione Vpara cambiar al modo VISUAL LINE y resalte las líneas que desea sangrar presionando j. Luego presione >para sangrarlos. Entonces el comando completo sería Vjjj>.

Alternativamente, coloque el cursor en la <script>etiqueta y use 4>>para sangrar cuatro líneas.

dogbane
fuente
1
Además, al cambiar varios niveles de sangría,. es extremadamente útil (moverá el mismo 'bloque' ya sea visual, con marcas o un [conteo] como los 4 >> anteriores).
Pif
Además, si su archivo de sintaxis puede hacer coincidir etiquetas, puede tener el cursor sobre la palabra "script" y presionar v para el modo visual,% para ir a la etiqueta coincidente y> para sangrar o = para sangrar automáticamente según la sintaxis, entonces el comando total sería v%> o v% =
ben
Esto también funciona con el modo visual de carácter inteligente (v minúscula), que es un poco más fácil de escribir. Entonces vjjj>
James Scriven
10

Para sangrar todas las líneas debajo de la línea actual

=G

Entonces, para sangrar todo el archivo, vaya al comienzo del archivo ( gg) y luego sangra todas las líneas debajo de la línea actual ( =G)

gg=G

Para sangrar la línea actual

==

Entonces, sangrar nlíneas debajo de la línea actual

n==

Por ejemplo, para sangrar 4 líneas debajo de la línea actual

4==

Estos son los comandos más simples para sangrar varias líneas.

Sagar Jain
fuente
8

Si fuera yo, notaría que hay 4 líneas para sangrar, colocar en la línea superior y luego escribir >4>. Si hubiera demasiadas líneas para contar, me colocaría en la línea superior y escribiría mkpara hacer una marca llamada k, luego se colocaría en la línea inferior (que podría estar a varias pantallas de distancia) y escribiría>'k

Michael Dillon
fuente
buen consejo para ahorrar haciendo los cálculos en líneas, gracias!
flickerfly
3

Este es un buen enfoque, si está tratando de sangrar una gran cantidad de líneas:

:/<script>/,/<\/script>/ >>
bhinesley
fuente