シーン
システムの開発時には、画面単位・機能単位に 「プログラム ID」なる番号を付与する場合があると思います。
プログラムを ID で管理すること自体の是非や、画面系と帳票系を区別なく通しで連番にしてしまっているという ID の振り方のマズさに等ついては触れていません。身近に発生しそうな適当なシーンに置き換えて読み進めてください。
ここでは、下記のように「プログラム ID」を割り当てているとしましょう。
# プログラム一覧
## 画面一覧
- PRG0010 … メニュー画面
- RPG0020 … 〇〇照会画面
- PRG0030 … 〇〇登録画面
- PRG0040 … 〇〇一覧画面
- PRG0050 … △△照会画面
:
:
## 帳票一覧
- PRG100 … 〇〇帳票
- PRG110 … △△帳票
:
:
- PRG190 … □□帳票
- PRG200 … ◎◎帳票
- PRG210 … ▲▲帳票
:
機能数を適当に見積もって、画面系のプログラムを PRG000 〜 PRG090 の範囲で、帳票系のプログラムを PRG100 〜 の範囲で割り当てようとしていましたが、機能を洗い出していくうちに、画面系が 10 画面では足りなくなってきました。
どうしたい?
帳票系のIDについては、以下のように 余裕をみて PRG500 〜 の範囲に割り当て直すことにしましょう。
## 帳票一覧
- PRG500 … 〇〇帳票
- PRG510 … △△帳票
:
:
- PRG590 … □□帳票
- PRG600 … ◎◎帳票
- PRG610 … ▲▲帳票
:
どうする?
Vim には、Ctrl-A
でカーソル位置の後方にある数値を +1 することができます。
加算したい行を選択して、それぞれの行に対して一度に +400 してやれば良さそうです。
- まず、ID を加算したい帳票系の行を
Shift-V
で選択します。 :normal 400^A
を入力して、Enterキーを押します。
上記 2. の
^A
は、Ctrl-A
を表しています。実際に入力する際には、Ctrl-V
を入力した後、Ctrl-A
を入力してください。
補足
上記の例では、Ctrl-A
で加算していますが、Ctrl-X
で減算もできます。
加減算する数値が PRG0500
のように 0 で始まる場合には、8進数として評価されてしまいます。このような数値を10進数として評価したい場合には、事前に :set nrformats-=octal
しておく必要がある点には注意が必要です。
まとめ
ノーマルモードの Ctrl-A
や Ctrl-X
で数値のインクリメント・デクリメントは、単純な機能ですが地味に便利です。マクロと組み合わせても色々できそう。
あと、ノーマルモードのコマンドを、コマンドラインから実行するための :normal
には、無限の可能性が秘められていると思いませんか?