Saturday, February 5, 2011

How do you make vim unhighlight what you searched for?

I search for "nurple" in a file. I found it, great. But now, every occurrence of "nurple" is rendered in sick black on yellow. Forever.

Forever, that is, until I search for something I know won't be found, such as "asdhfalsdflajdflakjdf" simply so it clears the previous search highlighting.

Can't I just hit a magic key to kill the highlights when I'm done searching?

  • :noh will do the trick. (short for nohighlight)

    From Lee
  • Just put this in your .vimrc

    " <Ctrl-l> redraws the screen and removes any search highlighting.
    nnoremap <silent> <C-l> :nohl<CR><C-l>
    
    paxdiablo : Oooh, that's a goodie. I've been using /@@ which works as long as there's no @@ in my files. I must modify my vimrc NOW!
    Amit : This is great, cured a lot of my headaches! I think ,it's better to use the full command in vimrc (:nohlsearch) to avoid conflicts in future.
    From Lucas S.
  •       *:noh* *:nohlsearch*
    :noh[lsearch]    Stop the highlighting for the 'hlsearch' option.  It
          is automatically turned back on when using a search
          command, or setting the 'hlsearch' option.
          This command doesn't work in an autocommand, because
          the highlighting state is saved and restored when
          executing autocommands |autocmd-searchpat|.
          Same thing for when invoking a user function.
    

    Found it just under the :help #

    Which i keep hitting all the time which highlights all the words on the current page like the current one :)

  • You could put this in your .vimrc file to prevent hilighting alltogether, if you don't find it useful (like me).

    set nohlsearch
    
  • There is hlsearch and nohlsearch. :help hlsearch will provide more information. If you want to bind F12 to toggle it on/off you can use this:

    map     <F12>   :nohlsearch<CR>
    imap    <F12>   <ESC>:nohlsearch<CR>i
    vmap    <F12>   <ESC>:nohlsearch<CR>gv
    
  • /lkjasdf has always been faster than :noh for me

    Pi : Doing this in front of someone who knew Vim better than I did is how I learned about :nohls.
    From jon
  • Then I prefer this:

    map  <F12> :set hls!<CR>
    imap <F12> <ESC>:set hls!<CR>a
    vmap <F12> <ESC>:set hls!<CR>gv
    

    And why? Because it toggles the switch: if highlight is on, then pressing turns it off. And vica cersa. HTH.

    Max : This can also be accomplished with the "invhlsearch" setting.
  • I search so often that I've found it useful to map the underscore key to remove the search highlight:

    nnoremap <silent> _ :nohl<CR>
    
  • I have this in my .vimrc:

    nnoremap ; :set invhlsearch<CR>
    

    This way, ; will toggle search highlighting. Normally, the ; key repeats the latest t/T/f/F command, but I never really used that functionality. I find this setting much more useful, because I can change search highlighting on and off very quickly, and easily get a sense of where my search results are, at a glance.

    From Max

0 comments:

Post a Comment