Introduction
blink.cmp is a completion plugin with support for LSPs, cmdline, signature help and snippets. It uses an optional custom fuzzy matcher for typo resistance. It provides extensibility via pluggable sources (LSP, buffer, snippets, etc), component based rendering and scripting for the configuration.
Features
- Works out of the box with no additional configuration
- Updates on every keystroke (0.5-4ms async, single core)
- Typo resistant fuzzy with frecency and proximity bonus
- Extensive LSP support (tracker)
- Snippet support: native
vim.snippet
(includingfriendly-snippets
),LuaSnip
andmini.snippets
- External sources support (community sources and compatibility layer for
nvim-cmp
sources) - Auto-bracket support based on semantic tokens
- Signature help (experimental, opt-in)
- Command line completion
- Terminal completion (0.11+ only! No source for shell completions exists yet, contributions welcome!)
Compared to built-in completion
- Typo resistant fuzzy matching
- Smarter scoring
- Proximity + frecency score bonuses
- Prefetching to minimize LSP latency
- Support for external non-LSP sources (snippets, path, buffer, git, ripgrep, ...)
- Ghost text
- Automatic signature help
- Auto-bracket support based on semantic tokens
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
- @stefanboca Author of blink.compat
- @lopi-py Windowing code
- @scottmckendry CI and prebuilt binaries
- @balssh + @konradmalik Nix flake, nixpkg and nixvim
- @abeldekat mini.snippets source
- @wurli Terminal completions
- @mikavilpas + @xzbdmw Dot-repeat (
.
) - @soifou
- @FerretDetective
complete_func
source - @krovuxdev Community moderation and help