Wählen Sie einen Codeblock in vim

13

Gegeben ein Code wie dieser:

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         }

Der Cursor steht auf dem Zeichen =in der Zeile 590.

Welches ist der effizienteste Weg, um den Codeblock auszuwählen:

  1. Zeilen 590-597
  2. Linien 591-596 (nur der innere Teil)
takeshin
quelle

Antworten:

20

Um das erste zu machen:

  • Hit $bis zum Ende des lineover gehen die{
  • Drücken Sie voder V(je nachdem, ob Sie Linien auswählen möchten oder nicht).
  • Drücken Sie %(um zur entsprechenden Klammer zu springen).

Um nur den inneren Teil auszuwählen, gehen Sie in den inneren Teil und verwenden Sie den i{Richtungsmodifikator.

Zum Beispiel, alles innerhalb des aktuellen löscht {…}Block, Typ: di{.

MikeyB
quelle
1
Wow, ich habe gerade gelernt, wie man es benutzt yi(, danke :)
takeshin
10
  1. $Um zum Ende der Zeile zu springen, in der Sie sich befinden (über der öffnenden Klammer)
    v, um eine Auswahl zu beginnen ( Vfür ganze Zeilen)
    %, um zur entsprechenden Klammer zu springen.

  2. jUm eine Zeile nach unten zu gehen, sodass sich der Cursor innerhalb der Klammern befindet, die Sie auswählen möchten, wählen Sie
    vmit der Auswahl ( Vfür ganze Zeilen)
    i{alles innerhalb der Klammern aus

Caleb
quelle
Methode 2 ist hier wahrscheinlich die beste Methode, da die $ -Bewegung in Methode 1 nur funktioniert, weil sich die öffnende Klammer am Ende der Zeile befindet. Methode 2 funktioniert ohne die Bewegung j, wenn sich der Cursor innerhalb der geschweiften Klammern befindet.
SpoonMeiser
3

Um die Antwort von Caleb nur geringfügig zu erweitern, vi{wählen Sie das "Innere" des Codeblocks aus. Verwenden Sie, um das "Äußere" des Codeblocks, dh die geschweiften Klammern, einzuschließen va{.

Dies beinhaltet nicht die while Strophe jedoch nicht ein. Dazu können Sie oden Cursor an den Anfang der Auswahl und dann 0an den Anfang der Zeile bewegen.

Fluss Satya
quelle