在vim中,有没有办法取消搜索*而不重置光标位置?

时间:2013-07-24 01:08:25

标签: vim

在vim中,我启用了hlsearch和incsearch。当我开始搜索时,它立即进入第一场比赛。如果按回车键接受搜索,结果将突出显示,光标位于第一个匹配位置。如果我按Esc取消,光标位置将重置为我开始搜索时的任何位置。

在这种情况下是否有办法让Esc取消搜索但是将光标位置保留在第一个匹配位置?这样,我最终会在正确的位置,但没有任何突出显示。

谢谢!

4 个答案:

答案 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

我使用的其他切换映射适用于布尔值spellnumberignorecasepastewrap

一旦您对vim感到满意,就可以开始使用<leader>