Hi rudy_b!

(please, don't top poste. I am fixing quotation)

On Mi, 21 Jul 2010, rudy_b wrote:
> On Jul 21, 10:58 am, Christian Brabandt <[email protected]> wrote:
> > :exe '%s/' join(map(range(100,line('$'),100), '''\%'' . v:val. "l$"'), 
> > '\|') '/ (CHECKED)'


> Thank you all for your replies.
> they all made sense.
[...]
> your command just works fine. Can you briefly break down what each
> portion does?

It basically builds up a dynamic substitution command and executes it.

:exe      " everything following is an expression that needs to be 
          executed
'%s/'     " start a substitution (as we are evaluating an expression,
          we need to return it as a string)
join(...,'\|')     " Take the list given as first argument and join it 
                   to a string by putting '\|' between each item (which
                   means OR as Regular expression, see :h /\|)

map(..., '''\%'' . v:val. "l$"')
   " Take the list, given as first argument and for each item, put
     \% before it and l$ after it

range(100,...,100)  " Create a list of numbers, starting at 100,
                      walk in steps of hundred and go up at most until 

line('$')           " numbers, which returns the last line number in 
                      the buffer

So what this does, it builds a pattern, that consists of every 100th line
number, that are joined by a logical OR. E.g. if you file has 350 lines, 
this will built a regular expression that looks like this 
/\%100l$\|\%200l$\|\%300l$
Which means the end of each given line number. See :h /\%l for the 
meaning of that atom.

And after that , we need to append the replacement part which in this 
case is simply:

'/ (CHECKED)'    " Append the String (Checked)

So in the end, this runs
:%s/\%100l$\|\%200l$\|\%300l$/ (CHECKED)


See also the help at
:h :exe
:h map()
:h range()
:h line()
:h /\|
:h /\%l
:h /$
:h Lists

for details.

regards,
Christian

-- 
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

Reply via email to