在 Vim 中突出显示搜索而不是替换?
Posted
技术标签:
【中文标题】在 Vim 中突出显示搜索而不是替换?【英文标题】:Highlight searches in Vim but not substitutions? 【发布时间】:2013-01-29 13:48:34 【问题描述】:我知道可以阻止 Vim 在任何搜索中突出显示,但有没有办法让它在常规搜索中突出显示,而不是例如替换?
我通常会突出显示一段文本,然后执行以下操作:
:s/^/#/
注释掉整个块。但是我的屏幕左侧上下有一个难看的黄色条,我每次都必须:noh
才能清除它。
我希望突出显示保留在常规 / 搜索中。这可能吗?
【问题讨论】:
不确定这样的方法是否可行,但也许可以将“搜索”高亮组更改为看起来像普通文本,然后以某种方式将“/”搜索键重新映射为`:匹配 NewSearchGroup /searchterm/。不过,我也很想听听更好的方法。 这不能回答你的问题,但你应该真正使用tComment(或类似的评论插件)来评论文本块。您将能够使用动作进行评论,并且可以轻松地评论任何内容,包括 XML。 也许您可以使用this answer 指向正确的方向... 【参考方案1】:这并不能完全回答您的问题,但对我来说也有同样的问题:我添加了这个命令,以便在搜索或搜索和替换后轻松停用突出显示
nnoremap <esc> :noh<return><esc>
(来自Vim clear last search highlighting)
【讨论】:
你打败了我...我打算建议映射ENTER
键。【参考方案2】:
我的解决方案:把它放在你的 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>
它的作用:
-
搜索始终启用突出显示。
使用 Enter 关闭突出显示直到下一次搜索,但不是下一次替换。再次按 Enter 不会重新打开它们。
使用 F4 关闭突出显示直到下一次搜索,而不是下一次替换。再次按 F4 将切换上一个搜索模式的突出显示 --- 搜索或替换 --- 如果有的话。
一些从未真正解释清楚的重点说明:
当'hlsearch'
选项打开时,所有未来的搜索/替代都将打开"highlight visibility"
。当前的"highlight visibility"
并不是真正可以直接查询或独立设置的选项,但可以使用命令:nohlsearch
独立关闭高亮可见性(这与:set nohlsearch
不同,因为下一次搜索将启用可见性再次)。
此外,每当你运行命令 :set hlsearch
时,都会有两种效果:它设置选项,并且如果你曾经输入过 :nohlsearch
,它会让 vim 忘记。换句话说,更改'hlsearch'
(打开或关闭)将强制当前的"highlight visibility"
在逻辑上匹配。
【讨论】:
谢谢@Ein!您关于:set hlsearch
helped me figure out 如何在映射期间摆脱突出显示并重新启用它而没有任何副作用(如匹配闪烁或错误消息)的注释。以上是关于在 Vim 中突出显示搜索而不是替换?的主要内容,如果未能解决你的问题,请参考以下文章