From 9f3b9ac79a5597256016c26c38c21f1296fff1c9 Mon Sep 17 00:00:00 2001 From: Julian Prein Date: Wed, 15 Feb 2023 11:22:43 +0100 Subject: [PATCH] vim:keys: Save unnamed reg when getting selection Fix that the mappings modified the unnamed register. --- .config/vim/vimrc.d/40-keys.vim | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.config/vim/vimrc.d/40-keys.vim b/.config/vim/vimrc.d/40-keys.vim index 227c861..6cea9c6 100644 --- a/.config/vim/vimrc.d/40-keys.vim +++ b/.config/vim/vimrc.d/40-keys.vim @@ -87,9 +87,18 @@ if (get(g:, 'loaded_fzf')) endif " Search for selected text. -" Taken from https://vim.fandom.com/wiki/Search_for_visually_selected_text -vnoremap * y/\V=escape(@",'/\') -vnoremap # y?\V=escape(@",'?\') +" Modified from https://vim.fandom.com/wiki/Search_for_visually_selected_text +function! GetVisualSelection() + let l:old_reg = getreg('"') + let l:old_regtype = getregtype('"') + norm y + let l:sel = getreg('"') + call setreg('"', l:old_reg, l:old_regtype) + return l:sel +endfunction + +vnoremap * /\V=escape(GetVisualSelection(),'/\') +vnoremap # ?\V=escape(GetVisualSelection(),'?\') " Extended `*`. Starts vim search (without jump) and ripgrep search for cword nmap * :let @/ = '\<' . expand('') . '\>'