我正在尝试重新映射F1键以删除搜索突出显示。这在普通模式下很简单:
nmap <F1> :noh<CR>
但在插入模式下它有点棘手。我能做到
imap <F1> <ESC>:noh<CR>i
但是这会导致光标向后移动一个插槽。一个小小的烦恼,但仍然是一个烦恼。我已尝试添加<RIGHT>
,但如果我在i
之前执行此操作,如果我在当前结束时将转移到下一行,并且如果我在此之后执行此操作i
如果我在行的开头,它将转移到第二个字符。
有没有办法让它做我想做的事情?真的我想要的是F1键在所有模式中删除搜索突出显示。不要太在意如何发生这种情况,因此有更好的解决方案,请告诉我。
答案 0 :(得分:5)
如果您不希望光标移动,请避免使用<esc>
。请改用<c-o>
。
" NB: this mapping doesn't remove, but toggles search highlighting,
" which is often much more useful
" Normal Mode
nnoremap <silent> <F8> :set hlsearch!<bar>set hlsearch?<CR>
" Insert Mode
imap <silent> <F8> <c-o><F8>
" (strict?) Visual Mode (i.e Select Mode is excluded)
xmap <silent> <F8> <c-\><c-n><F8>gv
" Select Mode
smap <silent> <F8> <c-\><c-n><F8>gv<c-g>
答案 1 :(得分:4)
您可以使用<C-o>
从插入模式执行单个命令:
imap <F1> <C-o>:noh<CR>