Vim Incremental Search

Vim incremental search

If you're using vim (and who isn't nowadays), you can enable incremental search with:

:set incsearch

Then just use the regular search command / and it will move the highlight as you add characters to the search string.

I also like hlsearch as well since it highlights all found items (once the search command is done) for easy viewing.

How to set vim incremental search highlight color different from existing search match color

You cannot do this with the built-in search. Vim will always highlight the next match with IncSearch, and all other matches (of the same, currently typed pattern) with the Search highlight group (assuming you have :set hlsearch incsearch).

If you want to keep the previous match, you have to define your own highlighting, e.g. like this (in the current window only):

:hi def link PreviousSearch MoreMsg " Define some different highlight group based on some existing one.
:execute 'match PreviousSearch /' . @/ . '/'

plugin recommendations

If you need more than one concurrent match, and a more robust implementation that covers all windows and tabs (and a lot of extra features), have a look at my Mark plugin. (The plugin page has links to alternative plugins.)

Vim incremental search next result

The best thing that I can find that you can do is the following:

Search for your pattern using /blah

Then, hit n or ? until you see what's out there...

Then go back to / and press CTRL-r /

this will bring back the last pattern that you searched for, so you can continue entering more text there...

I'm sure you can remap that combination to some key so that you can quickly go back to the search with the pattern already entered.

Vim incremental search during substitution

I'm not sure but I think there is not a way to do it. By the way, I use a little trick to speed up my substitutions. If you do something like:

:%s//bar

on the command line Vim will use your latest search. So, it's not exactly what you need but still a way to increase a bit your speed doing substitutions.

VIM, incremental search: How can I jump to the next result and get it highlighted?

The customary key for jumping to the next search result is 'n'.

I'm not entirely sure what you mean about highlighting - all search results should be highlighted if hlsearch is set, and for me it makes no difference if I go to the next result with 'n' or with '/'.

How to do incremenatal search in Vim like it is done in Emacs?

Recent versions of Vim provide builtin mappings of command-line mode to do exactly what you want.

You can find this in help:

CTRL-G

When 'incsearch' is set, entering a search pattern for "/" or
"?" and the current match is displayed then CTRL-G will move to the next match (does not take search-offset into account). Use CTRL-T to move to the previous match. Hint: on a regular keyboard T is above G.

Patch numbers for reference as not all installations have the mappings:

  • Patch 7.4.2259 made Ctrl-N/Ctrl-P act like Ctrl-S/Ctrl-R in Emacs.

  • Patch 7.4.2268 changed the mappings to Ctrl-G/Ctrl-T (the ones used initially have different purpose).

vim incremental search stop at end of file

Turn off the 'wrapscan' option.

set nowrapscan

VIM: use incremental search for file replace

The easiest way to do that is to do a search like normal, using 'incsearch' to help ensure the pattern is matching what you want. Once you've got that nailed down, you can either

  • Leave out the search pattern in :%s//bar/. When there's no specified search pattern, the current value of the / register is used, which will be the search you just did.
  • Insert the search pattern into the :s command using Ctrl+r/ (see :help c_ctrl-r) or Ctrl+rCtrl+o/ (if the search contains control characters, like ^H). This is useful if you want to make some final tweaks to the pattern or if you want to have it in your command history so you can reuse it even after performing another search.

Detecting a folded line or an incremental search (?)

Reusing ideas from Andy Rk:

function! FoldSetWithNoHL()
set nohls
if (foldclosed(line('.')) >= 0)
exe "normal za"
endif
endfunction

map <space> :silent! call FoldSetWithNoHL()<cr>


Related Topics



Leave a reply



Submit