2

在 vim 中,我打开了 hlsearch 和 incsearch。当我开始搜索时,它会立即转到第一个匹配项。如果我按回车键接受搜索,结果将突出显示并且光标位于第一个匹配项。如果我按 Esc 取消,光标位置将重置为我开始搜索时的位置。

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

谢谢!

4

4 回答 4

1

您可以使用:nohlsearch暂时删除突出显示;来自:h :nohlsearch

:noh[lsearch]

停止突出显示该hlsearch选项。hlsearch使用搜索命令或设置选项时,它会自动重新打开。

您可以轻松地将其映射到您想要的任何内容,我碰巧使用<leader>h

nmap <silent> <leader>h :nohlsearch<CR>

当然,您必须先按Enter退出搜索模式才能按映射,但之后按映射键很快就会成为习惯。

于 2013-07-24T01:44:57.920 回答
1

您可以:nohl在点击<Enter>取消突出显示后使用。

您可以使用映射轻松在高亮模式和非高亮模式之间切换:

" put this in your vimrc
nnoremap <Space> :set hls!<CR>

或者,您可以使用映射来清除当前的搜索词。

" put this in your vimrc
nnoremap <Space> :let @/=""<CR>
于 2013-07-24T01:12:28.650 回答
1

我将此添加到我的 .vimrc 中:

:command C let @/=""

我喜欢搜索亮点,我只是不喜欢它们留下来,所以当我完成它时,我只需输入:C它们就会消失!

此外,我将突出显示更改为下划线,而不是 selection-esq 样式,这对我来说更容易,但仍然很容易在页面上挑选出多个匹配项,而不必n一遍又一遍地盲目。两全其美的海事组织。

于 2013-08-01T19:43:34.403 回答
0

我假设您真的想要一种快速的方法来在突出显示搜索模式和不突出显示之间切换。我这样说是因为按下enter是退出搜索的一种方法,它将光标保持在当前位置,而escape退出的方式是将光标重置到搜索之前的位置。

因此,要切换突出显示(不使用<leader>),您可以将以下内容放入您的 .vimrc 文件中(我的 .vimrc 文件中有一堆切换布尔值都以 \t 开头):

nmap \th :set invhls<CR>

然后,从突出显示到不突出显示,您所要做的就是:

\th

我使用的其他切换映射用于布尔值spell、、、number和。ignorecasepastewrap

一旦您对 vim 更加熟悉,您就可以开始使用<leader>.

于 2013-07-24T02:35:28.320 回答