Wybierz blok kodu w vimie

13

Biorąc pod uwagę taki kod:

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         }

Kursor znajduje się przy znaku =w linii 590.

Który jest najbardziej efektywnym sposobem wybrania bloku kodu:

  1. linie 590–597
  2. linie 591-596 (tylko wewnętrzna część)
zabiera
źródło

Odpowiedzi:

20

Aby zrobić pierwszy:

  • Naciśnij, $aby przejść do końca linii podziału{
  • Naciśnij vlub V(w zależności od tego, czy chcesz wybrać linie, czy nie)
  • Naciśnij %(aby przejść do pasującego wspornika).

Aby wybrać tylko część wewnętrzną, wejdź do części wewnętrznej i użyj i{modyfikatora kierunkowego.

Na przykład, aby usunąć wszystko wewnątrz bieżącego {…}bloku, typ: di{.

MikeyB
źródło
1
Wow, właśnie nauczyłem się korzystać yi(, dzięki :)
zabiera
10
  1. $przeskoczyć do końca linii, na której się znajdujesz (być nad otwierającym nawiasem klamrowym),
    vaby rozpocząć zaznaczenie ( Vdla całych linii),
    %aby przejść do pasującego nawiasu klamrowego.

  2. jaby przejść w dół o jedną linię, aby kursor znalazł się w nawiasach klamrowych, które próbujesz wybrać,
    vaby rozpocząć zaznaczanie ( Vdla całych linii)
    i{zaznacz wszystko w nawiasach klamrowych

Caleb
źródło
Metoda 2 jest prawdopodobnie najlepszą tutaj metodą, ponieważ ruch $ w metodzie 1 działa tylko dlatego, że nawias otwierający znajduje się na końcu linii. Metoda 2 działa bez ruchu j, jeśli kursor znajduje się gdziekolwiek w nawiasach klamrowych.
SpoonMeiser,
3

Aby nieznacznie rozwinąć odpowiedź Caleba, vi{wybierze „wnętrze” bloku kodu. Aby uwzględnić „poza” bloku kodu, tj. Włączając nawiasy klamrowe, użyj va{.

Nie dotyczy to jednak whilezwrotki. Aby to zrobić, możesz oprzesunąć kursor na początek zaznaczenia, a następnie 0przesunąć zaznaczenie na początek wiersza.

Rzeka Satya
źródło