【发布时间】:2020-07-22 13:25:53
【问题描述】:
我希望在 Vim 中以可视模式重新映射我的 # 和 * 键,以便能够突出显示部分文本并分别向后和向前搜索。在a previous answer 的帮助下,我成功地进行了前向搜索。然而,我很难让向后搜索工作。以下是我的.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。然而这与# 的正常模式操作有悖常理,因此我尝试将选择分配给? 寄存器,结果发现没有名为? 的寄存器。我将如何解决这个问题?理想情况下,我宁愿在不安装插件的情况下执行此操作。
【问题讨论】:
标签: search vim configuration direction vim-registers