On Wed, Oct 18, 2006 at 12:28:28PM +0200, Robert Cussons wrote: > Jean-Rene David wrote: [snip] > > > >"--------------< cut here >--------------------------- > >" Search for visually selected text {{{ > >" From an idea by Michael Naumann, Jürgen Krämer. > >function! VisualSearch(direction) range > > let l:saved_reg = @" > > execute "normal! vgvy" > > let l:pattern = escape(@", '\\/.*$^~[]') > > let l:pattern = substitute(l:pattern, "\n$", "", "") > > if a:direction == 'b' > > execute "normal ?" . l:pattern . " > >" > > else > > execute "normal /" . l:pattern . " > >" > > endif > > let @/ = l:pattern > > let @" = l:saved_reg > >endfunction > > > >vnoremap <silent> * :call VisualSearch('f')<CR> > >vnoremap <silent> # :call VisualSearch('b')<CR> > >"--------------< cut here >--------------------------- > > This sounds brilliant Jean-Rene, I put it into my .vimrc, but it doesn't > seem to work, I did notice that between the if and else there are " > which just act as comments as they are on newlines, didn't know if this > was just my text wrapping, so I tried putting them on the line above, > both with a space between or not, didn't know if that might be cause but > that didn't seem to help either. Sorry I may be missing something > obvious, but I'd like to get this to work as it seems very useful. > I was selecting text in visual mode, then pressing / or ? and I just get > the normal action of pressing / or ?
I think the original included raw CR characters in the two :execute lines. Both are intended to end with "^M" (which is how they appeared in my copy of Jean-Rene's note). I think your e-mail client broke the lines, leading to syntax errors. I try to avoid such problems by not including raw CR, ESC, etc. characters in my vim scripts. I suggest replacing the two :execute lines with execute "normal ?" . l:pattern . "\<CR>" and execute "normal /" . l:pattern . "\<CR>" HTH --Benji Fisher