Seleccionar bloque de código en vim

13

Dado un código como este:

588          while ($linecounter > 0) {
589             $token = " ";
590             while ($token != PHP_EOL) {
591                 if (fseek($handle, $pos, SEEK_END) == -1) {
592                     $beginning = true;
593                     break;
594                 }
595                 $token = fgetc($handle);
596                 $pos--;
597             }
598             $linecounter--;
599             if ($beginning) {
600                 rewind($handle);
601             }
602         }

El cursor está en el carácter =en la línea 590.

Cuál es la forma más eficiente de seleccionar el bloque de código:

  1. líneas 590-597
  2. líneas 591-596 (solo la parte interna)
tomashin
fuente

Respuestas:

20

Para hacer lo primero:

  • Presione $para ir al final de la línea sobre el{
  • Presione vo V(dependiendo de si desea seleccionar líneas o no)
  • Empuje %(para saltar al soporte correspondiente).

Para seleccionar solo la parte interna, vaya dentro de la parte interna y use el i{modificador direccional.

Por ejemplo, para eliminar todo dentro del actual {…}bloque, escriba: di{.

MikeyB
fuente
1
Wow, acabo de aprender a usar yi(, gracias :)
takeshin
10
  1. $para saltar al final de la línea en la que se encuentra (para estar sobre la llave de apertura)
    vpara comenzar una selección ( Vpara líneas completas)
    %para saltar a la llave correspondiente.

  2. jpara bajar una línea de modo que el cursor esté dentro de los corchetes que está intentando seleccionar
    vpara comenzar una selección ( Vpara líneas enteras)
    i{seleccione todo dentro de los corchetes

Caleb
fuente
El método 2 es probablemente el mejor método aquí, ya que el movimiento $ en el método 1 solo funciona porque la llave de apertura está al final de la línea. El método 2 funciona sin el movimiento j si el cursor está en cualquier lugar dentro de las llaves.
SpoonMeiser
3

Para ampliar ligeramente la respuesta de Caleb, vi{seleccionará el "interior" del bloque de código. Para incluir el "exterior" del bloque de código, es decir, las llaves, use va{.

Sin whileembargo, esto no incluirá la estrofa. Para hacerlo, puede usar opara mover el cursor al comienzo de la selección y luego 0mover la selección al comienzo de la línea.

Río satya
fuente