Sangrar un número X de líneas en vim

Sangrar un número X de líneas en vim

Estuve codificando en Java para un trabajo recientemente y me di cuenta de que escribiré algo de código y luego determinaré que necesito encapsular el código en un bloque try/catch.

Me moví al principio de una línea y agregué una pestaña.

0 i <tab> <esc> k (repeat process until at beginning or end of block)

Esto estuvo bien las primeras tres o cuatro veces que tuve que sangrar, pero ahora se ha vuelto tedioso y soy una persona perezosa.

¿Existe una manera más fácil de solucionar este problema?

Respuesta1

Otra opción es seleccionar las líneas usando Shift+ Vcomo sugiere Ignacio, pero luego presionar >(signo mayor que). Eso hace una sangría de acuerdo con su configuración de sangría (shiftwidth, expandtab, etc.).

También puede sangrar más de un nivel connúmero>, por ejemplo, 2>para sangrar dos niveles.

Finalmente, si Vim reconoce el tipo de archivo (escriba :set filetype?, debería imprimir filetype=java), entonces puede seleccionar cualquier código como se muestra arriba y presionar =, y arreglará la sangría usando las reglas para ese tipo de archivo.

Respuesta2

Utilice el modo visual ( V) o línea visual ( ShiftV) para seleccionar las líneas a sangrar, presione :y luego ingrese s/^/CtrlVTab/.

Respuesta3

Otra forma:
CTRL+ v(esto inicia el modo de bloque visual)
x jo x k(donde x representa el número de líneas hacia abajo o hacia arriba)
>(también conocido como shift+ .)

Esto no es muy diferente de las respuestas anteriores, pero introduce el modo de bloque, que es realmente bueno para editar varias filas.

Respuesta4

Vim es mucho más inteligente de lo que las otras respuestas te harían pensar: es capaz de reindentar automáticamente una zona de código. Normalmente, desde dentro de unintentarbloque, solo tendrás que escribir =i{; de hecho, esto funcionará desde cualquier bloque entre llaves. Y eso es todo… siempre y cuando tus opciones de sangría ( cindent, expandtab, sw) estén configuradas correctamente según tus necesidades y gustos.

El siguiente paso sería utilizar un mapeo que sepa cómo rodear cualquier conjunto de líneas seleccionadas con suintentarbloque (y eso no se olvida de volver a sangrar al final del proceso). tengo tal cosapara C++, no sería demasiado complejo adaptarlo a java. (Éljustorequiere otros dos complementos de biblioteca:lh-vim-libyherramientas-mapa-lh.)

información relacionada