Of course a quick and dirty alternative is to do another search for gibberish:
/asdsad
I usually bind a key to :set hls! to make this easy and use the gibberish approach when I'm in vim on some machine I don't have my profile installed on.
If you don't want to remove highlighting one of the best ways is to clear the search register, unless of course you need the search items later. This will prevent you from having to re-enable the highlighting and(Edit: noh does not permanently disable highlighting) prevent you from accidentally jumping around. This is how I have mine setup:
nmap <silent> ,/ :let@/=""<CR>
What this does is map the key sequence ,/ in normal mode to clear the search register @/ by setting it to an empty string. This is just an alternative to what has already been stated.
In addition to “clear the search register”, you can even reset the search register to its previous value:
command! -nargs=* -range S
\ let atslash=@/|exe ':'.<line1>.','.<line2>.'s'.<q-args>|let @/=atslash
However:
- this does not reset the previous status of :hls. I do not believe this to be possible in general.
- this defines a new command, :S, to use in place of :s. You can use a cabbrev to map one to the other, but this will break when you add a range to the substitute command.
is.vim plugin has been pretty handy for me.
It automatically clears the searches in various scenarios, you just need
to install it via any plugin manager you use and it will do the work for you,
no need to do setup anything or change settings manually. It just works.
This might not be the most proper method, but control-L redraws the screen, clearing any highlighting in the process. This saves you from having to create another binding.