incsearch.vim by haya14busa


Build Status Build status


incsearch.vim incrementally highlights ALL pattern matches unlike default 'incsearch'.


1. Simple

incsearch.vim provides simple improved incremental searching.

2. Comfortable

You can use it comfortably like the default search(/, ?). It supports all modes (normal, visual, operator-pending mode), dot-repeat ., {offset} flags, and so on.

3. Useful

incsearch.vim aims to be simple, but at the same time, it offers useful features.

Incremental regular expression editing

You can see all patterns that the given regular expression matches all at once while incremental searching.



Neobundle / Vundle / vim-plug

NeoBundle 'haya14busa/incsearch.vim'
Plugin 'haya14busa/incsearch.vim'
Plug 'haya14busa/incsearch.vim'


git clone ~/.vim/bundle/incsearch.vim

Basic usage

map /  <Plug>(incsearch-forward)
map ?  <Plug>(incsearch-backward)
map g/ <Plug>(incsearch-stay)

<Plug>(incsearch-stay) doesn't move the cursor.

Additional usages

README introduces some features, but please see :h incsearch.vim for more information.

Automatic :nohlsearch

Farewell, nnoremap <Esc><Esc> :<C-u>nohlsearch<CR>! This feature turns 'hlsearch' off automatically after searching-related motions.

" :h g:incsearch#auto_nohlsearch
set hlsearch
let g:incsearch#auto_nohlsearch = 1
map n  <Plug>(incsearch-nohl-n)
map N  <Plug>(incsearch-nohl-N)
map *  <Plug>(incsearch-nohl-*)
map #  <Plug>(incsearch-nohl-#)
map g* <Plug>(incsearch-nohl-g*)
map g# <Plug>(incsearch-nohl-g#)

Emacs-like incsearch: move the cursor while incremental searching

Move the cursor to next/previous matches while incremental searching like Emacs.

Mapping description
<Over>(incsearch-next) to next match. default: <Tab>
<Over>(incsearch-prev) to prev match. default: <S-Tab>

Scroll-like feature while incremental searching

Mapping description
<Over>(incsearch-scroll-f) scroll to the next page match. default: <C-j>
<Over>(incsearch-scroll-b) scroll to the previous page match. default: <C-k>

🎉 Version 2.0 🎉

Now, incsearch.vim provides some (experimental) API. You can implement or use very useful yet another search command 🔎

Experimental API

Starts incsearch.vim with your custom configuration. See help docs for more detail.

Converter feature


function! s:noregexp(pattern) abort
  return '\V' . escape(a:pattern, '\')

function! s:config() abort
  return {'converters': [function('s:noregexp')]}

noremap <silent><expr> z/ incsearch#go(<SID>config())

incsearch.vim x fuzzy incsearch-fuzzy.gif

Module extension

incsearch.vim x fuzzy x vim-easymotion incsearch-fuzzy-easymotion.gif


haya14busa (

Special thanks

osyo-manga(, the author of the custom command line library,, which incsearch.vim heavily depends on.




:h incsearch.vim