Skip to content

Introduction

blink.cmp is a completion plugin with support for LSPs and external sources that updates on every keystroke with minimal overhead (0.5-4ms async). It uses an optional custom fuzzy matcher to easily handle 20k+ items. It provides extensibility via pluggable sources (LSP, snippets, etc), component based rendering and scripting for the configuration.

Features

Compared to built-in completion

Compared to nvim-cmp

  • Avoids the complexity of nvim-cmp's configuration by providing sensible defaults
  • Updates on every keystroke with 0.5-4ms of overhead, versus nvim-cmp's default debounce of 60ms with 2-50ms hitches from processing
    • You may try magazine.nvim which includes many performance patches, some of which have been merged into nvim-cmp
  • Boosts completion item score via frecency and proximity bonus. nvim-cmp boosts score via proximity bonus and optionally by recency
  • Typo-resistant fuzzy matching unlike nvim-cmp's fzf-style fuzzy matching
  • Core sources (buffer, snippets, path, lsp) are built-in versus nvim-cmp's exclusively external sources
  • Built-in auto bracket and signature help support
  • Prefetching to minimize LSP latency

Special Thanks

  • @hrsh7th nvim-cmp used as inspiration and cmp-path/cmp-cmdline implementations modified for path/cmdline sources
  • @garymjr nvim-snippets implementation modified for snippets source
  • @redxtech Help with design and testing
  • @aaditya-sahay Help with rust, design and testing

Contributors