After a search I've done, all the matches for the respective query remain highlighted and it's annoying. This happens even after I close the respective file (normal behavior?). How to I remove this?
5 Answers
You want the command :nohlsearch
, but you don't want to type that every time. Put this in your ~/.vimrc:
nnoremap <silent> <leader>n :nohlsearch<CR>
After that, you just enter your leader (which by default is \
) and then n
to clear the matches. You don't need to use n
; if you prefer, pick something else.
You can also remap your leader to something more comfortable, if you like. I use a comma:
let mapleader = ","
(That goes before the mapping to clear searches.)
-
4
-
@scottl Fair enough (and good reminder that all commands have shortcuts), but I still like to map frequently used commands. Aug 9, 2010 at 14:25
i just /qiw772723euz
to "search" for something thats not in the file. hacky workaround, i know, i am interested in a real solution as well :)
Similar to @Telemachus answer above, a comment on this answer over at SO by @David Winslow suggested mapping a toggle of hlsearch
. You would map the following:
nmap <silent> <leader>n :set hlsearch!<CR>
Hitting n would then toggle highlight search off and on every time you hit it.
In my config, I clear highlighted search terms by just hitting enter in command mode. This is how that's configured.
set hlsearch " highlight all matched terms
" Pressing return clears highlighted search
:nnoremap <CR> :nohlsearch<CR>/<BS>
As a side note, I like to make sure that my search matches are highlighted super clearly, no matter the color scheme, so I give them black text on a yellow background.
" When highlighting search terms, make sure text is contrasting color
:highlight Search ctermbg=yellow ctermfg=black
" Do the same for gvim
:highlight Search guibg=yellow guifg=black
I have a slightly different solution. To me it feels as the natural thing to do would be to press <esc>
to make it go away. However, that doesn't work. Mapping <esc>
to :noh
has nasty side-effects, so that's not an option either. <Leader>n
and similar mappings feels unintuitive for me for such a trivial task. However, pressing <esc>
twice is something I can live with:
nnoremap <silent> <esc><esc> :nohlsearch<CR>