Is it possible to not trigger the normal search highlighting when using search as a movement

vim

When I do a search in vim, I like to have my results highlighted and super-visible, so I give them a bright yellow background and a black foreground in my .vimrc.

" When highlighting search terms, make sure text is contrasting colors
:highlight Search guibg=yellow guifg=black

(This is for GUI versions of vim, like MacVim or Gvim; for command-line, you'd use ctermbg and ctermfg.)

But I sometimes use search with a command, as in c/foo – "change from the cursor to the next occurrence of foo."

In that case, I don't want all the occurrences of foo to be highlighted.

Can I turn off highlighting only in cases where search is used as a movement for a command?

Best Answer

These naive mappings seem to help.

  • normal search

    Turn highlighting on before doing the search:

    nnoremap / :set hls<CR>/
    
  • motion search

    Turn highlighting off before doing the search:

    nnoremap v/ :set nohls<CR>v/
    nnoremap d/ :set nohls<CR>d/
    nnoremap y/ :set nohls<CR>y/
    nnoremap c/ :set nohls<CR>c/
    

Note that you'd need to setup similar mapping for ?.

Related Question