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行目(内側部分のみ)

回答:


20

最初に行うには:

  • ヒット$lineoverの最後に移動します{
  • プッシュvまたはV(行を選択するかどうかに応じて)
  • 押します%(一致するブラケットにジャンプします)。

内側の部分のみを選択するには、内側の部分の内側に移動し、i{方向修飾子を使用します。

たとえば、カレント内のすべてを削除するには {…}ブロックように入力しますdi{


1
うわー、私はちょうど使用方法を学んだyi(、ありがとう:)
takeshin

10
  1. $選択している行の最後にジャンプして(
    v開始ブレースの上に)、選択を開始します(V行全体に対して)
    %一致する中括弧にジャンプします。

  2. j1行下に移動して、カーソルを中括弧内に入れて、選択
    vを開始しようとしています(V行全体に対して)
    i{中括弧内のすべてを選択します


方法1の$移動は、開きブレースが行末にあるためにのみ機能するため、ここでは方法2がおそらく最良の方法です。カーソルがブレース内のどこかにある場合、方法2はjの移動なしで機能します。
SpoonMeiser

3

カレブの答えを少しだけ拡大するには、 vi{は、コードブロックの「内部」を選択します。コードブロックの「外側」、つまり中括弧を含めるには、を使用しますva{

whileただし、これにはスタンザは含まれません。これを行うにはo、カーソルを選択範囲の先頭0に移動してから、選択範囲を行の先頭に移動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.