On 01/04/07, Georg Dahn <[EMAIL PROTECTED]> wrote:
Hi!> For example, I do often want to > replace a name in the text with another. What I used to do is > selecting it with mouse and type > :%s/<ctrl-ins>/newname/gc > Is there a way to do this with the mouse (and without retyping the name) ? > What I want is maybe something like 'invoking a yanked register in my > colon command' I have the following in my vimrc file: function MakeSearchString(str) return substitute(escape(@", '\\/.*$^~[]'), '\n', '\\n', 'g') endfunction function! <SID>VisualSearch(direction) if a:direction == '#' let l:rhs = "y?" else let l:rhs = "y/" endif let l:rhs = l:rhs . "\<C-R>=MakeSearchString(@\")\<CR>\<CR>gV" return l:rhs endfunction vnoremap <expr> * <SID>VisualSearch('*') vnoremap <expr> # <SID>VisualSearch('#') vnoremap <F3> y/<C-R>=MakeSearchString(@")<CR> vnoremap <S-F3> y?<C-R>=MakeSearchString(@")<CR> vnoremap <M-F3> y:%s/<C-R>=MakeSearchString(@")<CR>/ With this just select a text and by typing <F3> you can search for the selected text and by typing <M-F3> you can replace it easily. '*' searches forward and '#' backwards like '*' and '#' do for the word under the cursor in normal mode. Best regards, Georg
Thanks all of you for your answers. I grab the tip with Ctrl-R because I have to use vim on many different computers, but will consider adding the script when I'll refresh my vimrces. Guillaume
