我知道可以停止Vim在任何搜索时进行高亮,但是否有一种方法可以使它在普通搜索中进行高亮,例如不进行替换操作时?
我经常会突出显示一段文本,然后执行以下操作:
:s/^/#/
要注释掉整个代码块,但这会导致屏幕左侧出现一个丑陋的黄色条形,并且每次都需要使用:noh
清除它。
我希望在普通的/searches中保持高亮显示。这可能吗?
我知道可以停止Vim在任何搜索时进行高亮,但是否有一种方法可以使它在普通搜索中进行高亮,例如不进行替换操作时?
我经常会突出显示一段文本,然后执行以下操作:
:s/^/#/
要注释掉整个代码块,但这会导致屏幕左侧出现一个丑陋的黄色条形,并且每次都需要使用:noh
清除它。
我希望在普通的/searches中保持高亮显示。这可能吗?
这并不能完全回答你的问题,但对于我遇到同样问题时,它很有帮助:我添加了以下命令以轻松地在搜索或搜索替换后停用高亮显示。
nnoremap <esc> :noh<return><esc>
(来自Vim清除上次搜索高亮显示)
我的解决方案:将这个放入你的vimrc文件中
set nohlsearch
noremap * :set hlsearch<CR>:nohlsearch<CR>*
noremap / :set hlsearch<CR>:nohlsearch<CR>/
noremap ? :set hlsearch<CR>:nohlsearch<CR>?
nnoremap <F4> :set invhlsearch<CR>
inoremap <F4> <ESC>:set invhlsearch<CR>gi
nnoremap <CR> :set nohlsearch<CR>
这个功能的作用是:
关于高亮的一些注释,通常没有很好的解释:
当选项 'hlsearch'
打开时,所有未来的搜索/替换都将打开 "高亮可见性"
。当前的 "高亮可见性"
实际上不是您可以直接查询或独立设置的选项,但您可以使用命令 :nohlsearch
独立关闭高亮可见性(这与 :set nohlsearch
不同,因为下一次搜索将重新启用可见性)。
此外,每当运行命令 :set hlsearch
时,有两个效果:它设置选项,并使 vim 忘记您是否已经键入过 :nohlsearch
。换句话说,更改 'hlsearch'
(打开或关闭)将强制当前的 "高亮可见性"
逻辑匹配。
:set hlsearch
的笔记帮助我解决了问题,让我在映射期间消除高亮,并重新启用它,而不会出现任何副作用,如匹配闪烁或错误消息。 - phatskat
:match NewSearchGroup /searchterm/
。我很乐意听听更好的方法。 - Tim