Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A completion plugin for neovim coded in Lua.

License

NotificationsYou must be signed in to change notification settings

hrsh7th/nvim-cmp

Repository files navigation

A completion engine plugin for neovim written in Lua.Completion sources are installed from external repositories and "sourced".

demo.mp4

Readme!

  1. There is a GitHub issue that documentsbreaking changes for nvim-cmp. Subscribe to the issue to be notified of upcoming breaking changes.
  2. This is my hobby project. You can support me via GitHub sponsors.
  3. Bug reports are welcome, but don't expect a fix unless you provide minimal configuration and steps to reproduce your issue.
  4. Thecmp.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.

Concept

  • Full support for LSP completion related capabilities
  • Powerful customizability via Lua functions
  • Smart handling of key mappings
  • No flicker

Setup

Recommended Configuration

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

Where can I find more completion sources?

Have a look at theWiki and thenvim-cmpGitHub topic.

Where can I find advanced configuration examples?

See theWiki.

About

A completion plugin for neovim coded in Lua.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp