在Vim中强调搜索但不替换?

我知道有可能阻止Vim在任何搜索中突出显示,但是有没有办法让它在常规搜索中突出显示,但不是替代?

我会经常突出显示一段文字,然后做一些事情:

:s/^/#/

评论整个区块。 但后来我在屏幕的左侧有一个丑陋的黄色条,我必须:noh每次都清除它。

我想强调要保持常规/搜索。 这可能吗?


这并不能完全回答你的问题,但是对于我有同样的问题它有帮助:我添加了这个命令,以便在搜索或搜索替换之后轻松地停用突出显示

nnoremap <esc> :noh<return><esc>

(来自Vim clear last search highlighting)


我的解决方案:把它放在你的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键不会让他们重新开启。
  • 使用F4关闭高光直到下一次搜索,但不能下一次替代。 再次按下F4将切换最后一次搜索模式的亮点---搜索或替换---如果有的话。
  • 一些关于亮点的笔记从来没有很好解释过:
    'hlsearch'选项打开时,所有未来的搜索/替代品都将打开"highlight visibility" 。 当前的"highlight visibility"并不是真的可以直接查询或独立设置的选项,但您可以使用:nohlsearch (这不同于:set nohlsearch ,因为下一次搜索将启用可见性再次)。

    另外,每当你运行命令时:set hlsearch有两个效果:它设置选项AND,它会让vim忘记,如果你输入过:nohlsearch 。 换句话说,改变'hlsearch' (开或关)将强制当前的"highlight visibility"在逻辑上匹配。

    链接地址: http://www.djcxy.com/p/49381.html

    上一篇: Highlight searches in Vim but not substitutions?

    下一篇: Cancel the select pattern in VIM