我希望在 Vim 中以可视模式重新映射我的#
和*
键,以便我能够突出显示部分文本并分别向后和向前搜索它。在先前答案的帮助下,我设法使前向搜索工作。但是,我很难向后搜索工作。以下是我的相关部分.vimrc
。
function! GetVisualSelection() abort
try
let a_save = @a
silent! normal! gv"ay
return @a
finally
let @a = a_save
endtry
endfunction
" Map # and * to search for the highlighted text in visual mode
vnoremap <silent> * <c-\><c-n>:let @/ = escape(GetVisualSelection(), '/\^$*.[~')<CR>n
vnoremap <silent> # <c-\><c-n>:let @/ = escape(GetVisualSelection(), '/\^$*.[~')<CR>N
最初的高亮和向后搜索效果很好,但是一旦我按下n
向后搜索下一个匹配项,Vim 就会继续向前搜索。我怀疑这是因为向后搜索使用?
运算符而不是/
,这意味着我必须按N
而不是n
。然而,这与 的正常模式操作有悖常理#
,因此我尝试将选择分配给?
寄存器,却发现没有名为 的寄存器?
。我将如何解决这个问题?理想情况下,我宁愿在不安装插件的情况下这样做。