I suggest using a substitute that calls a function using \= (see :help 
sub-replace).

For example:

function! ReFormat(stuff)
    let l = split(a:stuff, '|')
    let x = l[0]
    let y = l[1]
    let z = l[2]
    return 'def foo(x="' . x . '"' . "\n"
       \ . '        y="' . y . '"' . "\n"
       \ . '        z="' . z . '")'
endfunction

:%s/\w\+|\w\+|\w\+/\=ReFormat(submatch(0))

If the pattern that finds the lines to process is different to that which 
identifies the text within the line, use :global, say

:g/whatever/s/\w\+|\w\+|\w\+/\=ReFormat(submatch(0))

Using a function that processes a range is hard IMO.  

Regards, John Little

-- 
-- 
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 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to