2011-07-19 12 views
8

Vim tiene algunos movimientos de texto muy útiles, tales como ib, i), i}, etcétera para seleccionar rápidamente una porción de texto. Pero, a menudo necesito un bloque interno en modo línea-sabio. Por ejemplo (con números de línea):Cómo seleccionar rápidamente línea a gota en Vim (interior)

1: $foo = array(
2:  'bar' => 'Bar', 
3:  'quux' => 'Quux', 
4: ); 

Ahora, cuando mi cursor está en la línea 2 o 3 en algún lugar y me golpeó vib o vi), Vim selecciona la línea 2, 3 y los espacios para sangrar en la línea 4. Solo quiero la línea 2 y 3. He intentado con Vib y Vi) pero lo hacen de la misma que con una minúscula v.

¿Hay algún movimiento de texto fácil u otra forma rápida de seleccionar un bloque interno en el modo de línea?

Respuesta

2

Encontré una manera más simple al final: vim-indent-object me permite seleccionar regiones de texto basadas en el nivel de sangría. Esto es más o menos lo mismo teniendo en cuenta que mi código fuente siempre está bien sangrado.

Ahora, si estoy en la línea 2 o 3 en mi ejemplo, sólo tiene que pulsar vii para seleccionar el objeto sangría interna, y se selecciona la línea 2 y 3. maravillosa!

4

me permite obtener downvotes para esto, pero que acababa de hacer un movimiento hacia arriba o hacia abajo el número de líneas que necesito, como Vj o Vk como siempre que se sepa.

Tengo una encuadernación que cambia entre numeración absoluta y relativa (:set relativenumber) por lo que es visualmente fácil de identificar, siempre y cuando estén todos en pantalla.

+0

este es el enfoque correcto para este problema específico, 'relativenumber' ayuda mucho, especialmente si hay un montón de líneas (que no sean solo un par). – alfredodeza

+0

Gracias por la configuración 'relativenumber'. No sabía sobre eso. Desafortunadamente, estoy ejecutando Debian Squeeze y viene con Vim 7.2 que no lo tiene. –

+0

+1 para 'relativenumber' :-) – actionshrimp

3

Estoy de acuerdo en que sería bueno tener el comportamiento que usted describe. Si está decidido, entonces siempre puede rodar su propio objeto de texto personalizado utilizando el marco textobj-user de Kana. Lo usé para crear a text object for working with ruby blocks, y me pareció sorprendentemente fácil de hacer.

+0

Los objetos de texto personalizados suenan bastante útiles. ¡Gracias! –

Cuestiones relacionadas