- Notifications
You must be signed in to change notification settings - Fork433
A completion plugin for neovim coded in Lua.
License
NotificationsYou must be signed in to change notification settings
hrsh7th/nvim-cmp
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
A completion engine plugin for neovim written in Lua.Completion sources are installed from external repositories and "sourced".
demo.mp4
- There is a GitHub issue that documentsbreaking changes for nvim-cmp. Subscribe to the issue to be notified of upcoming breaking changes.
- This is my hobby project. You can support me via GitHub sponsors.
- Bug reports are welcome, but don't expect a fix unless you provide minimal configuration and steps to reproduce your issue.
- The
cmp.mapping.preset.*is pre-defined configuration that aims to mimic neovim's native like behavior. It can be changed without announcement. Please manage key-mapping by yourself.
- Full support for LSP completion related capabilities
- Powerful customizability via Lua functions
- Smart handling of key mappings
- No flicker
This example configuration usesvim-plug as the plugin manager andvim-vsnip as a snippet plugin.
callplug#begin(s:plug_dir)Plug'neovim/nvim-lspconfig'Plug'hrsh7th/cmp-nvim-lsp'Plug'hrsh7th/cmp-buffer'Plug'hrsh7th/cmp-path'Plug'hrsh7th/cmp-cmdline'Plug'hrsh7th/nvim-cmp'" For vsnip users.Plug'hrsh7th/cmp-vsnip'Plug'hrsh7th/vim-vsnip'" For luasnip users." Plug 'L3MON4D3/LuaSnip'" Plug 'saadparwaiz1/cmp_luasnip'" For mini.snippets users." Plug 'echasnovski/mini.snippets'" Plug 'abeldekat/cmp-mini-snippets'" For ultisnips users." Plug 'SirVer/ultisnips'" Plug 'quangnguyen30192/cmp-nvim-ultisnips'" For snippy users." Plug 'dcampos/nvim-snippy'" Plug 'dcampos/cmp-snippy'callplug#end()lua <<EOF-- Setup nvim-cmp. localcmp= require'cmp'cmp.setup({ snippet= {-- REQUIRED- you must specifya snippet engineexpand=function(args)vim.fn["vsnip#anonymous"](args.body)-- For `vsnip` users.--require('luasnip').lsp_expand(args.body)-- For `luasnip` users.--require('snippy').expand_snippet(args.body)-- For `snippy` users.--vim.fn["UltiSnips#Anon"](args.body)-- For `ultisnips` users.--vim.snippet.expand(args.body)-- For native neovim snippets (Neovim v0.10+)-- For `mini.snippets` users:-- localinsert= MiniSnippets.config.expand.insertor MiniSnippets.default_insert--insert({ body=args.body })-- Insert atcursor--cmp.resubscribe({"TextChangedI","TextChangedP" })--require("cmp.config").set_onetime({ sources= {} })end, },window= {-- completion=cmp.config.window.bordered(),-- documentation=cmp.config.window.bordered(), },mapping=cmp.mapping.preset.insert({ ['<C-b>']=cmp.mapping.scroll_docs(-4), ['<C-f>']=cmp.mapping.scroll_docs(4), ['<C-Space>']=cmp.mapping.complete(), ['<C-e>']=cmp.mapping.abort(), ['<CR>']=cmp.mapping.confirm({ select= true }),-- Accept currently selected item. Set `select`to `false`toonlyconfirm explicitly selecteditems. }), sources=cmp.config.sources({ { name='nvim_lsp' }, { name='vsnip' },-- For vsnip users.-- { name='luasnip' },-- For luasnip users.-- { name='ultisnips' },-- For ultisnips users.-- { name='snippy' },-- For snippy users. }, { { name='buffer' }, }) })-- To use git you needto install theplugin petertriho/cmp-gitand uncommentlines below-- Set configurationfor specificfiletype.--[[cmp.setup.filetype('gitcommit', { sources=cmp.config.sources({ { name='git' }, }, { { name='buffer' }, }) })require("cmp_git").setup() ]]---- Usebuffersourcefor `/`and `?` (if you enabled `native_menu`, this won't work anymore).cmp.setup.cmdline({'/','?' }, {mapping=cmp.mapping.preset.cmdline(), sources= { { name='buffer' } } })-- Use cmdline&pathsourcefor':' (if you enabled `native_menu`, this won't work anymore).cmp.setup.cmdline(':', {mapping=cmp.mapping.preset.cmdline(), sources=cmp.config.sources({ { name='path' } }, { { name='cmdline' } }), matching= { disallow_symbol_nonprefix_matching= false } })-- Setup lspconfig. local capabilities=require('cmp_nvim_lsp').default_capabilities()-- Replace<YOUR_LSP_SERVER> with eachlsp server you've enabled.vim.lsp.config('<YOUR_LSP_SERVER>', { capabilities= capabilities })vim.lsp.enable('<YOUR_LSP_SERVER>')EOF
Have a look at theWiki and thenvim-cmpGitHub topic.
See theWiki.
About
A completion plugin for neovim coded in Lua.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
No packages published
Uh oh!
There was an error while loading.Please reload this page.