From f686373270115f503204b3811f0490c312c65057 Mon Sep 17 00:00:00 2001 From: Gaston Festari Date: Thu, 2 Apr 2026 09:48:43 -0300 Subject: [PATCH] feat: visual star search --- plugin/packages.vim | 5 +---- plugin/visual-star-search.vim | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 plugin/visual-star-search.vim diff --git a/plugin/packages.vim b/plugin/packages.vim index 08f16f7..fafb5a1 100644 --- a/plugin/packages.vim +++ b/plugin/packages.vim @@ -12,16 +12,13 @@ function! PackInit() abort call minpac#add('chriskempson/base16-vim') call minpac#add('ctrlpvim/ctrlp.vim') call minpac#add('editorconfig/editorconfig-vim') - call minpac#add('elzr/vim-json') call minpac#add('fatih/vim-go') call minpac#add('hashivim/vim-terraform') call minpac#add('inkarkat/vim-ReplaceWithRegister') call minpac#add('junegunn/vim-easy-align') call minpac#add('mustache/vim-mustache-handlebars') - call minpac#add('nelstrom/vim-visual-star-search') call minpac#add('nginx/nginx', {'subdir': 'contrib/vim'}) - call minpac#add('pangloss/vim-javascript') - call minpac#add('plasticboy/vim-markdown') + call minpac#add('preservim/vim-markdown') call minpac#add('tpope/vim-abolish') call minpac#add('tpope/vim-commentary') call minpac#add('tpope/vim-dispatch') diff --git a/plugin/visual-star-search.vim b/plugin/visual-star-search.vim new file mode 100644 index 0000000..2aee574 --- /dev/null +++ b/plugin/visual-star-search.vim @@ -0,0 +1,20 @@ +" From http://got-ravings.blogspot.com/2008/07/vim-pr0n-visual-search-mappings.html + +" makes * and # work on visual mode too. +function! s:VSetSearch(cmdtype) + let temp = @s + norm! gv"sy + let @/ = '\V' . substitute(escape(@s, a:cmdtype.'\'), '\n', '\\n', 'g') + let @s = temp +endfunction + +xnoremap * :call VSetSearch('/')/=@/ +xnoremap # :call VSetSearch('?')?=@/ + +" recursively vimgrep for word under cursor or selection +if maparg('*', 'n') ==? '' + nmap * :execute 'noautocmd vimgrep /\V' . substitute(escape(expand(""), '\'), '\n', '\\n', 'g') . '/ **' +endif +if maparg('*', 'v') ==? '' + vmap * :call VSetSearch('/'):execute 'noautocmd vimgrep /' . @/ . '/ **' +endif