Freaky fast fuzzy finder (Denite matcher) for vim/neovim.

This is a denite.nvim matcher.


In your .vimrc:

" vim-plug; for other plugin managers, use what's appropriate
" if you don't want to trust a prebuilt binary, skip the 'do' part
" and build the binaries yourself. Instructions are further down
" and place them in the /path/to/plugin/rplugin/python3 folder

Plug 'raghur/fruzzy', {'do': { -> fruzzy#install()}}

" optional - but recommended - see below
let g:fruzzy#usenative = 1

" tell denite to use this matcher by default for all sources
call denite#custom#source('_', 'matchers', ['matcher/fruzzy'])

Native modules

Native module gives a 10 - 15x speedup over python - ~40-60μs!. Not that you'd notice
it in usual operation (python impl is at 300 - 600μs)

. Run command :call fruzzy#install() if you're not using vim-plug.
. restart nvim


.Running tests
. Clone
. cd rplugin/python3
. pytest - run tests with python implementation
. FUZZY_CMOD=1 pytest - run tests with native module

.Build native module
. install nim devel (0.18 and 0.18.1 will not work)
. dependencies
.. nimble install binaryheap
.. nimble install nimpy
. [Windows] nim c --app:lib --out:fruzzy_mod.pyd -d:release -d:removelogger fruzzy_mod
. [Linux] nim c --app:lib -d:release -d:removelogger fruzzy_mod
. -d:removelogger
- removes all log statements from code.
- Without this symbol defined, you will get info level logging.
- If you remove -d:release you will also get debug level logging


  1. Ctrlp compat