この記事は Vim 8.0 Advent Calendarの 12 日目の記事です。
Vim で連番と言えば今まででも、マクロを使う方法や Vim script を活用する方法などがありましたが、より手軽な方法が追加されました。
g<C-a>
g<C-x>
コマンド
今まではノーマルモードにて <C-a>
<C-x>
を実行することで、カーソル位置の数値を増減できましたが、ビジュアルモード中でも同様の操作が可能になりました。
加えて、連番を作り出すための g<C-a>
g<C-x>
がビジュアルモードのコマンドに追加されました。
使用例
例えば以下のようなバッファがあった場合:
1
1
1
1
1
2 行目以降をビジュアルモードで選択して、g<C-a>
を実行すると、以下のようになります。
1
2
3
4
5
連番を作ることができました。2 行目以降を選択する点に注意してください。
これは見付かった数値に対して、見付かった順に [見付かった回数×count] 分、数値を足します。
例えば 2g<C-a>
を実行すると、以下のようになります。
1
3
5
7
9
この操作は行指向で、選択範囲の各行で最初に見付かった数値のみを増減させます。また、数値が見付からなかった行はスキップされます。
1. これは 1 つ目の項目です。
1. これは 2 つ目の項目であり、
折り返しが含まれています。
1. この項目にも折り返しが含まれて
います。3 つ目の項目です。
1. 4 つ目の項目です。
このテキストに対して、<C-v>
で 2 行目から最終行まで矩形選択を行い、g<C-a>
を実行すると、以下のようになります。
1. これは 1 つ目の項目です。
2. これは 2 つ目の項目であり、
折り返しが含まれています。
3. この項目にも折り返しが含まれて
います。3 つ目の項目です。
4. 4 つ目の項目です。
数値が存在しない行は飛ばされます。
ここで V
で行単位で選択をしてしまうと、3 つ目の項目の中身が含まれてしまってうまくいかなくなります。
1. これは 1 つ目の項目です。
2. これは 2 つ目の項目であり、
折り返しが含まれています。
3. この項目にも折り返しが含まれて
います。6 つ目の項目です。
5. 4 つ目の項目です。
'nrformats'
オプションに alpha
が含まれていれば、アルファベットの増減も可能です。
a. ...
a. ...
a. ...
a. ...
a. ...
↓
a. ...
b. ...
c. ...
d. ...
e. ...
g<C-x>
は数値を減らす点以外は g<C-a>
と同様に動作します。