突出显示Vim中的搜索但不是替换?

时间:2013-02-13 21:17:53

标签: vim

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

我经常会突出显示一段文字然后执行以下操作:

:s/^/#/

注释掉整个街区。但是我的屏幕左侧有一个丑陋的黄色条,我每次都要:noh清除它。

我希望突出显示保持常规/搜索。这可能吗?

2 个答案:

答案 0 :(得分:5)

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

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

(来自Vim clear last search highlighting

答案 1 :(得分: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>

它的作用:

  1. 搜索始终启用高亮显示。
  2. 使用 Enter 关闭高亮显示,直到下一次搜索,但不是下一次搜索。再次按 Enter 将不会重新打开它们。
  3. 使用 F4 关闭高亮显示,直到下一次搜索,但不是下一次搜索。再次按 F4 将切换最后一个搜索模式的高亮显示---搜索或替换---如果有的话。
  4. 关于亮点的一些注释从未真正解释过:
    启用'hlsearch'选项后,将来所有搜索/替换都会启用"highlight visibility"。当前"highlight visibility"实际上不是您可以直接查询或设置的选项,但您可以使用命令:nohlsearch独立关闭突出显示可见性(这与:set nohlsearch不同,因为下一次搜索将再次启用可见性。

    此外,无论何时运行命令:set hlsearch,都会产生两种效果:它设置选项,如果您输入:nohlsearch,它会让vim忘记。换句话说,更改'hlsearch'(开启或关闭)会强制当前"highlight visibility"在逻辑上匹配。