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)

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{.


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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.