Vim can do some arithmetic for you. The simplest one are ctrl+a
(add)
and ctrl+x
(subtract) actions. They find nearest digital number in
the current line and add/subtract one to/from this number. You can prepend
them with count to add/subtract more than one. It’s not very
sophisticated but proves to be useful, especially in macros.
That’s not all, however. Vim has a special =
arithmetic register.
Unlike other registers, you can’t save any text inside of it - it’s
read-only. After you press =
, you will be dropped in a last line where
you can put an expression that will be evaluated. So to paste 180, you
can use for example "=3*60<ENTER>p
.
You can paste content of any register without quitting insert mode using
<ctrl-r>X
(where X
is the register name). This is very handy when
combined with arithmetic register. When in insert mode, you can use
<ctrl-r>=3*60<ENTER>
to enter 180
.
Unfortunately you can’t to extended math using arithmetic register. You
can use bc
to do this, however. You can send current line to bc
and
replace it with bc
‘s output using !!bc
(equivalent to :.!bc
)
command. So for example, to insert value of 2^64
to vim, use
o2^64<ESC>!!bc
.