On Friday, August 4, 2017 at 10:03:16 AM UTC-7, porphyry5 wrote:
> :h submatch( includes
> :s/\d\+/\=submatch(0) + 1/
> This finds the first number in the line and adds one to it.
> Needing to increment several fields consisting of underscore and a single
> digit (_\d) I modified the above along the lines of
> s/_\(\d\)/\='_'.submatch(1) + 1/gc
> most of which merely replaced the entire field with '1'
> Thinking the problem might be a conflict between the types, string and
> number, I tried
> s/_\(\d\)/\="_".nr2char(submatch(1) + 1)/gc
> s/_\(\d\)/\="_".nr2char(submatch(1) + 31)/gc
> and finally success with
> s/_\(\d\)/\="_".nr2char(submatch(1) + 49)/gc
> which is limited to operations on just a single digit.
> So, is there a generally reliable method of performing arithmetic on numeric
> fields embedded in a larger string pattern with :s? Thank you.
> Graham Lawrence
works perfectly, and I see what I was trying initially
is actually equivalent to
In the meantime, I read :h substitute( and found
which avoids the problem by making a secondary pattern selection of the number
alone. But that's more typing, so I will pay attention to operator precedence
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
You received this message because you are subscribed to the Google Groups
To unsubscribe from this group and stop receiving emails from it, send an email
For more options, visit https://groups.google.com/d/optout.