Selecionar bloco de código no vim

13

Dado um 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         }

O cursor está no caractere =na linha 590.

Qual é a maneira mais eficiente de selecionar o bloco de código:

  1. linhas 590-597
  2. linhas 591-596 (apenas a parte interna)
leva
fonte

Respostas:

20

Para fazer o primeiro:

  • Pressione $para ir até o final da linha a{
  • Pressione vou V(dependendo se você deseja selecionar linhas ou não)
  • Pressione %(para pular para o suporte correspondente).

Para selecionar apenas a parte interna, entre na parte interna e use o i{modificador direcional.

Por exemplo, para apagar tudo dentro do atual {…}bloco, digite: di{.

MikeyB
fonte
1
Uau, eu só aprendi a usar yi(, graças :)
takeshin
10
  1. $para pular para o final da linha em que você está (para ultrapassar a chave de abertura)
    vpara iniciar uma seleção ( Vpara linhas inteiras)
    %para pular para a chave correspondente.

  2. jpara descer uma linha para que o cursor fique dentro das chaves que você está tentando selecionar
    vpara iniciar uma seleção ( Vpara linhas inteiras)
    i{selecione tudo dentro das chaves

Caleb
fonte
O método 2 é provavelmente o melhor método aqui, já que o movimento $ no método 1 funciona apenas porque a chave de abertura está no final da linha. O método 2 funciona sem o movimento j se o cursor estiver em qualquer lugar dentro do aparelho.
SpoonMeiser
3

Para expandir um pouco a resposta de Caleb, vi{selecione o "interior" do bloco de código. Para incluir o "fora" do bloco de código, ou seja, incluindo os chavetas, use va{.

Isso não inclui a whileestrofe, no entanto. Para fazer isso, você pode omover o cursor para o início da seleção e, em seguida, 0mover a seleção para o início da linha.

River Satya
fonte