@kasumiiです。こんにちは。
Vimで数の増減をするときに CTRL-A
や CTRL-X
を使いますが、0(ゼロ)ではじまる数字を増減しようとすると8進数と認識されてしまって都合が悪い場合があります。
数の増減時は10進数として扱ってもらう方法を調べたのでメモ。
07 をひとつ増加させると 010 になる
たとえば、07
を 08
にするために CTRL-A
を押すと、010
になってしまってアレ?ってなる場合。
どうやら8進数として認識されちゃってるみたいなので、10進数としてカウントアップしてもらうように nrformats
の設定を変更すればいいらしい。
:help nrformats
してヘルプを見てみます。
This defines what bases Vim will consider for numbers when using the CTRL-A and CTRL-X commands for adding to and subtracting from a number respectively; see |CTRL-A| for more info on these commands. alpha If included, single alphabetical characters will be incremented or decremented. This is useful for a list with a letter index a), b), etc. *octal-nrformats* octal If included, numbers that start with a zero will be considered to be octal. Example: Using CTRL-A on "007" results in "010". hex If included, numbers starting with "0x" or "0X" will be considered to be hexadecimal. Example: Using CTRL-X on "0x100" results in "0x0ff". Numbers which simply begin with a digit in the range 1-9 are always considered decimal. This also happens for numbers that are not recognized as octal or hex.
nrformats
は、デフォルトでは octal,hex
になっているようです。
alpha(アルファベット)
octal(8進数)
hex(16進数)
vimrcに set nrformats= を追加する
手元にある「実践Vim 思考のスピードで編集しよう!」を見てみると、こんな風に書いてありました。
仕事に8進数がよく出てくるのなら、Vim のこのデフォルトの挙動はピッタリだ。そうでない人は、vimrc に以下のような行を追加したほうがよい。
set nrformats=
こうすると、0が前置されていようがいまいが、Vimはすべての数を10進数として扱うようになる。
ふむふむ。早速、vimrcに set nrformats=
を追加してみたら、ちゃんと 07
の次が 08
に増加するようになりました!(∩´∀`)∩ワーイ
ついでにアルファベットの増減も試してみる
set nrformats=alpha
でアルファベットの増減ができるってことをはじめて知りました。人によっては CTRL-A
や CTRL-X
で前後のアルファベットにできるのは便利かもしれませんね。
まだまだ知らないことがたくさんあるので、もっとVimを使いこなせるようになりたいです……!
【書籍版】実践Vim 思考のスピードで編集しよう!
【Kindle版】実践Vim 思考のスピードで編集しよう!(アスキー書籍)