Выберите блок кода в vim

13

Учитывая код, подобный этому:

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         }

Курсор находится на символе =в строке 590.

Какой самый эффективный способ выбрать блок кода:

  1. линии 590-597
  2. строки 591-596 (только внутренняя часть)
takeshin
источник

Ответы:

20

Чтобы сделать первый:

  • Нажмите, $чтобы перейти к концу строки над{
  • Нажмите vили V(в зависимости от того, хотите ли вы выбрать линии или нет)
  • Нажмите %(чтобы перейти к соответствующей скобке).

Чтобы выбрать только внутреннюю часть, войдите во внутреннюю часть и используйте i{модификатор направления.

Например, чтобы удалить все внутри текущего {…}блока, введите: di{.

MikeyB
источник
1
Ух, я только что научился пользоваться yi(, спасибо :)
takehin
10
  1. $чтобы перейти к концу строки, на которой вы находитесь (чтобы быть над открывающей скобкой),
    vчтобы начать выделение ( Vдля целых строк),
    %чтобы перейти к соответствующей скобке.

  2. jчтобы перейти на одну строку вниз, чтобы курсор находился внутри фигурных скобок, которые вы пытаетесь выбрать,
    vчтобы начать выделение ( Vдля целых строк),
    i{выделите все внутри фигурных скобок.

Калеб
источник
Метод 2, вероятно, является лучшим методом здесь, так как движение $ в методе 1 работает только потому, что открывающая скобка находится в конце строки. Метод 2 работает без движения j, если курсор находится в пределах фигурных скобок.
SpoonMeiser
3

Чтобы немного расширить ответ Калеба, vi{выделите «внутреннюю часть» блока кода. Для включения «снаружи» блока кода, т. Е. Включая фигурные скобки, используйте va{.

Это не будет включать в себя whileстрофу, хотя. Для этого вы можете oпереместить курсор в начало выделения, а затем 0переместить выделение в начало строки.

Река сатья
источник