LoginSignup
46
21

More than 5 years have passed since last update.

Vim 8.0 Advent Calendar 12 日目 連番の生成

Posted at

この記事は 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> と同様に動作します。

46
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
21