On 2006-04-28, Suresh Govindachar <[EMAIL PROTECTED]> wrote: > > Gerald Lai sent on Thu, 27 Apr 2006 17:44:05 -0700 (PDT): > >> On Thu, 27 Apr 2006, Suresh Govindachar wrote: > >> > >> Hello, > >> > >> Why does the following _single_ line map > >> generate the E10 error?: > >> > >> nmap <space> :let > @a=substitute(getline('.'),'\(^.*|\s*\)\|\(\s\s*$\)','','g') > > Note that error E10 concerns viml line continuation > but the preceding is all one line -- does not have viml > line continuation.
Actually, the description of E10 says it is _often_ caused by command-line continuation; it does not say that that is the only cause. > > >> How would it be fixed? I played with this a little bit before seeing Gerald's reply and discovered, as he pointed out, that the problem is with the '|'. I worked around it by adding backslashes until it worked. I found I had to escape the first one in the pattern to avoid the error, then figured I would have to escape the second one twice to make vim see it as '\|'. nmap <space> :let @a=substitute(getline('.'),'\(^.*\|\s*\)\\|\(\s\s*$\)','','g')<CR> And as Gerald said, it needs a "<CR>" at the end, too. > > > > What do you intend to do with the mapping? > > The line would have several '|' characters in it; I want @a to > contain the the stuff after the very last '|' but without any > leading or trailing white space in the captured stuff: > So, for example, if the line was: > > stuff | more stuff | want this gold > > then @a should contain "want this gold" (without quotes) Now that I know what you intended this to do, I tested my version and it seems to work. I wish I had a better understanding of when vim ignores quotes and instead requires backslashes to escape |'s. HTH, Gary -- Gary Johnson | Agilent Technologies [EMAIL PROTECTED] | Wireless Division | Spokane, Washington, USA