45621RE: Calling a function from a :s command (weird results)
- Nov 30, 2003At 23:42 11-30-2003, Klaus Bosau wrote:
>On Sun, 30 Nov 2003, David Fishburn wrote:I ran a couple of tests and the results are interesting.
> >>> I get this kind of thing once in a while; and if I remember correctly,
> >>> it's a quoting issue. From your results, it looks as if the \= isn't
> >>> being taken for its intended meaning. Without remembering what really
> >>> fixes this, I'd say go ahead and throw an extra backslash in there.
> >> Just a guess.. Flag 'C' in 'cpo'?
> > Nope.
> > cpoptions=aABceFs
> function! InvertString(str)
> " Courtesy of Antony Scriven
> " This will invert/reverse a string
> " This will work on arbitrary length strings, too. The /.*/ should
> " quick, which might make it up for using a regex rather than using
> " numerous commands in a :while loop.
> " This can be used in a substitute command as follows:
> " :%s/AUTHORIZATION/\=InvertString(submatch(0))
> let inverted = substitute(a:str, '.\(.*\)\@=',
> \ '\=a:str[strlen(submatch(1))]', 'g')
> return inverted
Could it be that submatching can't be nested?
return substitute(a:str, 'h\(i\)', '\=strlen(submatch(1))', 'g')
" T=strlen(submatch(1))s is some sample text.
return substitute(a:str, 'h\(i\)', strlen(submatch(1)), 'g')
" T2s is some sample text.
" The 2 is the submatch strlen from outside this call!!!
" This is some sample text.
" Try: %s/Th\(is\)/\=TestSubSub(submatch(0))/
"John R. Aldridge, Jr."
- << Previous post in topic Next post in topic >>