On Wed, 17 Oct 2012, stosss wrote:
Okay I have something that should be achievable but I can't figure it
out. I have a lot of files with data for books. Each file is a book
and is in chapters with lines of text.
sample of existing data:
<h2>1</h2><p>
1 line of text.<br>
2 another line of text.<br>
3 lines of text.<br>
...
10 More lines of text.<br>
...
100 Even more lines of text.<br>
[...]
What I want is:
<h2 id="b001c001">1</h2><p>
<span id="b001c001v001">1</span> line of text.<br />
<span id="b001c001v002">2</span> another line of text.<br />
<span id="b001c001v003">3</span> lines of text.<br />
...
<span id="b001c001v010">10</span> More lines of text.<br />
...
<span id="b001c001v100">100</span> Even more lines of text.
[...]
I can't figure out how to use %03d to change my numbers from 1 to 001
I also would like to figure out how to use setreg() to increase this
c001 part of the id label so it changes to c002 when it is supposed to
so I don't have to reset my map at every chapter. I need to figure out
the first part before I figure out the second part. The examples in
the VIM tips aren't helping me figure this out. Maybe I am looking in
the wrong place.
I tried all sorts of things but nothing worked. I don't remember all
the things I tried but here are a few attempts I made that didn't
work:
:%s@\([0-9]\+\)@%03d\1@
:%s@\([0-9]\+\)@\=printf("%03d"\1)@
:%s@\([0-9]\+\)@\=printf("%03d\1")@
I don't understand how to use that number format in my search and
replace. The examples on the pages linked above don't give me any
clues. It has been a very long time since I have asked for help with
VIM. I usually have been able to find answers in the tips. But not
this time.
For the %03d part:
:%s@\(\d\+\)@\=printf("%03d", submatch(1))@g
See:
:help submatch()
But, that treats numbers that look like octal incorrectly:
E.g.:
abc010def -> abc008def
(because 010-base-8 is 8-base-10.)
So consume the zeros ahead of time:
:%s@0\*\(\d\+\)@\=printf("%03d", submatch(1))@g
--
Best,
Ben
--
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