在vim中,我启用了hlsearch和incsearch。当我开始搜索时,它立即进入第一场比赛。如果按回车键接受搜索,结果将突出显示,光标位于第一个匹配位置。如果我按Esc取消,光标位置将重置为我开始搜索时的任何位置。
在这种情况下是否有办法让Esc取消搜索但是将光标位置保留在第一个匹配位置?这样,我最终会在正确的位置,但没有任何突出显示。
谢谢!
答案 0 :(得分:1)
您可以在点击:nohl
后使用<Enter>
取消突出显示。
您可以使用映射在高亮模式和非高亮模式之间轻松切换:
" put this in your vimrc
nnoremap <Space> :set hls!<CR>
或者,您可以使用映射清除当前搜索词。
" put this in your vimrc
nnoremap <Space> :let @/=""<CR>
答案 1 :(得分:1)
您可以使用:nohlsearch
暂时删除突出显示;来自:h :nohlsearch
:
:noh[lsearch]
停止突出显示
hlsearch
选项。使用搜索命令或设置hlsearch
选项时,它会自动重新打开。
您可以轻松地将其映射到您想要的任何内容,我碰巧使用<leader>h
:
nmap <silent> <leader>h :nohlsearch<CR>
当然,你必须先点击 Enter 才能退出搜索模式,然后才能点击映射,但很快就会习惯性地点击映射键。
答案 2 :(得分:1)
我将此添加到我的.vimrc:
:command C let @/=""
我喜欢搜索精彩部分,我只是不喜欢它们,所以当我完成它之后,我只需输入:C
它们就会消失!
此外,我将我的高光改为下划线而不是选择-esq样式,这在我的眼睛上更容易,但仍然很容易在页面上挑选多个匹配,而不必盲目n
一遍又一遍。两个世界中最好的。
答案 3 :(得分:0)
我假设您真的希望在突出显示搜索模式和不突出显示之间切换。我这样说是因为按下enter
是退出搜索的一种方法,将光标保持在当前位置,而escape
则以光标重置到搜索前的位置退出。
因此,要切换突出显示(不使用<leader>
),您可以将以下内容放在.vimrc文件中(我的.vimrc文件中有一堆切换布尔值,所有这些都以\ t开头):
nmap \th :set invhls<CR>
然后你需要做的就是从突出显示到不突出显示:
\th
我使用的其他切换映射适用于布尔值spell
,number
,ignorecase
,paste
和wrap
。
一旦您对vim感到满意,就可以开始使用<leader>
。