nvim cmp
v0.0.1
Un complemento de motor de finalización para neovim escrito en Lua. Las fuentes de finalización se instalan desde repositorios externos y se "obtienen".
cmp.mapping.preset.*
es una configuración predefinida que tiene como objetivo imitar el comportamiento nativo de neovim. Se puede cambiar sin previo aviso. Administre la asignación de claves usted mismo. Esta configuración de ejemplo utiliza vim-plug
como administrador de complementos y vim-vsnip
como complemento de fragmentos.
call plug # 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 ultisnips users.
" Plug 'SirVer/ultisnips'
" Plug 'quangnguyen30192/cmp-nvim-ultisnips'
" For snippy users.
" Plug 'dcampos/nvim-snippy'
" Plug 'dcampos/cmp-snippy'
call plug # end ()
lua << EOF
-- Set up nvim-cmp.
local cmp = require ' cmp '
cmp . setup ({
snippet = {
-- REQUIRED - you must specify a snippet engine
expand = 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+)
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` to only confirm explicitly selected items.
}),
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 need to install the plugin petertriho/cmp-git and uncomment lines below
-- Set configuration for specific filetype.
--[[ cmp.setup.filetype('gitcommit', {
sources = cmp.config.sources({
{ name = 'git' },
}, {
{ name = 'buffer' },
})
})
require("cmp_git").setup() ]] --
-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
cmp . setup . cmdline ({ ' / ' , ' ? ' }, {
mapping = cmp . mapping . preset . cmdline (),
sources = {
{ name = ' buffer ' }
}
})
-- Use cmdline & path source for ':' (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 }
})
-- Set up lspconfig.
local capabilities = require ( ' cmp_nvim_lsp ' ). default_capabilities ()
-- Replace <YOUR_LSP_SERVER> with each lsp server you've enabled.
require ( ' lspconfig ' )[ ' <YOUR_LSP_SERVER> ' ]. setup {
capabilities = capabilities
}
EOF
Eche un vistazo a la Wiki y al tema de GitHub sobre nvim-cmp
.
Ver la Wiki.