Handling numbers in Vim when they have a dash in front of them
Over on the Fediverse, I mentioned a Vim situation I'd run into:
Here's a situation Vim's Ctrl-A feature for handily incrementing numbers doesn't readily handle: if you have machines called eg 'something-1' and want to make that 'something-2', 'something-3', and so on. Vim will interpret the '-1' bit as the number -1 and auto-increment it to 'something0'. There is probably a clever Vim way around this, or you can use another option.
(Then people in the replies gave me a number of clever Vim solutions.)
The situation where this came up was that I was writing some new DNS entries for a series of boring names, starting with:
machine-1 IN A 10.x.y.z
I wanted to copy and duplicate in order to make 'machine-2', 'machine-3', and so on entries, so I copied that first line and hit Ctrl-A to increment the machine number, which didn't work because Vim, by default, saw the '-1' as a negative number and duly incremented it to '0'. Visually selecting the number before using Ctrl-A isn't really a great solution for this particular case, because I want to do it repeatedly to create different numbers; at best I'd be repeatedly selecting shorter and shorter columns and incrementing them by one.
Jeff Forcier offered the best general solution for people
like me,
which is to tell Vim that I don't work with negative
numbers by adding 'unsigned
to the 'nrformats
' setting. I understand why
this isn't the default, but I sort of wish it was or at least that Vim
was more sophisticated about what it considered a negative number (so
that it required a free-standing '-', not one that text before it).
The obvious quick fix if you remember is switching to Ctrl-X to decrement the number. Related to this is that I could start at the end of the sequence instead of the start, so I'd start with, say, 'machine-5', duplicate it a bunch, and then use Ctrl-A to create machine-4, machine-3, and so on. Both of these rely on realizing that Vim is going to interpret the '-1' as a negative number, which is something that doesn't come up very often for me.
Having written this entry, I will hopefully remember the whole issue.
I'm not sure if I want to add 'set nrformats+=unsigned
' to any .vimrc,
though, because that's a subtle trap in its own right. If I put it in,
I'll probably forget it, then someday I may actually be working with
negative numbers and get another surprise. The current surprise is at
least readily understandable.
|
|