## File: README.md > [!WARNING] > V2 is under active development with many breaking changes. Consider staying on stable by using `branch = 'v1'` or `version = "1.*"` in your `lazy.nvim` config. [See the V1 docs](https://cmp.saghen.dev/) > > For V2, [blink.lib](https://github.com/saghen/blink.lib) must be installed via your package manager. See the [UPGRADE.md](./UPGRADE.md) for a detailed migration guide. **blink.cmp** is a completion plugin with support for LSPs, cmdline, signature help, and snippets. It uses an [optional](https://cmp.saghen.dev/configuration/fuzzy.html#rust-vs-lua-implementation) custom [fuzzy matcher](https://github.com/saghen/frizbee) for typo resistance. It provides extensibility via pluggable sources (LSP, buffer, snippets, etc), component based rendering and dynamic configuration. ## Features - Works out of the box with no additional configuration - Updates on every keystroke (0.5-4ms async, single core) - [Typo resistant fuzzy](https://github.com/saghen/frizbee) with frecency and proximity bonus - Extensive LSP support ([tracker](https://cmp.saghen.dev/development/lsp-tracker)) - [Snippet support](https://cmp.saghen.dev/configuration/snippets.html): native `vim.snippet` (including `friendly-snippets`), `LuaSnip` and `mini.snippets` - External sources support ([community sources](https://cmp.saghen.dev/configuration/sources.html#community-sources) and [compatibility layer for `nvim-cmp` sources](https://github.com/saghen/blink.compat)) - [Auto-bracket support](https://cmp.saghen.dev/configuration/completion.html#auto-brackets) based on semantic tokens - [Signature help](https://cmp.saghen.dev/configuration/signature.html) (experimental, opt-in) - [Command line completion](https://cmp.saghen.dev/modes/cmdline.html) - [Terminal completion](https://cmp.saghen.dev/modes/term) (0.11+ only! No source for shell completions exists yet, contributions welcome!) - [Comparison with built-in completion](https://cmp.saghen.dev/#compared-to-built-in-completion) - [Comparison with nvim-cmp](https://cmp.saghen.dev/#compared-to-nvim-cmp) ## Installation Head over to the [V1 documentation website](https://cmp.saghen.dev/installation) for installation instructions and configuration options. For V2, use the [documentation website tracking `main`](https://main.cmp.saghen.dev/installation). ## Special Thanks - [@hrsh7th](https://github.com/hrsh7th/) nvim-cmp used as inspiration and cmp-path/cmp-cmdline implementations modified for path/cmdline sources - [@garymjr](https://github.com/garymjr) nvim-snippets implementation modified for snippets source - [@redxtech](https://github.com/redxtech) Help with design and testing - [@aaditya-sahay](https://github.com/aaditya-sahay) Help with rust, design and testing ### Contributors - [@stefanboca](https://github.com/stefanboca) Author of [blink.compat](https://github.com/saghen/blink.compat) and maintainer - [@soifou](https://github.com/soifou) Maintainer - [@lopi-py](https://github.com/lopi-py) Windowing code - [@scottmckendry](https://github.com/scottmckendry) CI and prebuilt binaries - [@balssh](https://github.com/Balssh) + [@konradmalik](https://github.com/konradmalik) Nix flake, nixpkg and nixvim - [@abeldekat](https://github.com/abeldekat) mini.snippets source - [@FelipeLema](https://github.com/FelipeLema) vsnip source - [@wurli](https://github.com/wurli) Terminal completions - [@mikavilpas](https://github.com/mikavilpas) + [@xzbdmw](https://github.com/xzbdmw) Dot-repeat (`.`) - [@FerretDetective](https://github.com/FerretDetective) `complete_func` source - [@krovuxdev](https://github.com/krovuxdev) Community moderation and help --- ## File: doc/configuration/appearance.md --- title: Appearance --- # Appearance [Go to default configuration](./reference#appearance) If you're looking for how to change the appearance of the completion menu, check out the [menu draw configuration](./completion#menu-draw). ## Highlight groups | Group | Default | Description | | ----- | ------- | ----------- | | `BlinkCmpMenu` | Pmenu | The completion menu window | | `BlinkCmpMenuBorder` | Pmenu | The completion menu window border | | `BlinkCmpMenuSelection` | PmenuSel | The completion menu window selected item | | `BlinkCmpScrollBarThumb` | PmenuThumb | The scrollbar thumb | | `BlinkCmpScrollBarGutter` | PmenuSbar | The scrollbar gutter | | `BlinkCmpLabel` | Pmenu | Label of the completion item | | `BlinkCmpLabelDeprecated` | PmenuExtra | Deprecated label of the completion item | | `BlinkCmpLabelMatch` | Pmenu | (Currently unused) Label of the completion item when it matches the query | | `BlinkCmpLabelDetail` | PmenuExtra | Label description of the completion item | | `BlinkCmpLabelDescription` | PmenuExtra | Label description of the completion item | | `BlinkCmpKind` | PmenuKind | Kind icon/text of the completion item | | `BlinkCmpKind` | PmenuKind | Kind icon/text of the completion item | | `BlinkCmpSource` | PmenuExtra | Source of the completion item | | `BlinkCmpGhostText` | NonText | Preview item with ghost text | | `BlinkCmpDoc` | NormalFloat | The documentation window | | `BlinkCmpDocBorder` | NormalFloat | The documentation window border | | `BlinkCmpDocSeparator` | NormalFloat | The documentation separator between doc and detail | | `BlinkCmpDocCursorLine` | Visual | The documentation window cursor line | | `BlinkCmpSignatureHelp` | NormalFloat | The signature help window | | `BlinkCmpSignatureHelpBorder` | NormalFloat | The signature help window border | | `BlinkCmpSignatureHelpActiveParameter` | LspSignatureActiveParameter | Active parameter of the signature help | --- ## File: doc/configuration/completion.md # Completion Blink cmp has *a lot* of configuration options, the following document tries to highlight the ones you'll likely care the most about for each section. For all options, click on the "Go to default configuration" button next to each header. ## Keyword [Go to default configuration](./reference#completion-keyword) Controls what the plugin considers to be a keyword, used for fuzzy matching and triggering completions. Most notably, the `range` option controls whether the keyword should match against the text before *and* after the cursor, or just before the cursor. :::tabs == Prefix == Full ::: ## Trigger [Go to default configuration](./reference#completion-trigger) Controls when to request completion items from the sources and show the completion menu. The following options are available, excluding their `show_on` prefix: :::tabs == Keyword Shows after typing a keyword, typically an alphanumeric character, `-` or `_` ```lua completion.trigger.show_on_keyword = true ```