現状はこんなコードです function! s:vsearch() if line("'<")!=line("'>") execute "normal! *" else let bkupreg=@@ silent normal gvy if @@=~'.*\n' let @@=strpart(@@,0,strlen(@@)-1) end if &magic let @@=escape(@@,'^$.*~[]\') else let @@=escape(@@,'^$\') end exe "normal /".@@ let @/=@@ exe "normal n" let @@=bkupreg end endfunction vmap * :call <sid>vsearch()<cr>