NVIM-CMP:Neovim的Lua编写的补全插件
nvim-cmpA completion plugin for neovim coded in Lua.项目地址:https://gitcode.com/gh_mirrors/nv/nvim-cmp
1. 项目介绍
NVIM-CMP 是一个由Lua编写的Neovim补全插件,它提供了强大的自定义功能、对LSP(Language Server Protocol)相关完成能力的全面支持以及智能键映射处理。此插件旨在无闪烁地提供流畅的代码补全体验,并且可以与诸如vim-vsnip这样的snippet扩展无缝配合。
2. 项目快速启动
安装依赖
确保已经安装了以下依赖:
neovim/nvim-lspconfig
: Neovim的内置LSP客户端配置库。hrsh7th/cmp-nvim-lsp
: 提供与NVIM-LSP集成的NVIM-CMP源。- 其他源如
cmp-buffer
,cmp-path
,cmp-cmdline
等,根据需求选择安装。
如果你使用的是vim-plug作为插件管理器,可以在你的init.vim
或.vimrc
中添加以下内容:
call plug#begin('~/.local/share/nvim/plugged')
Plug 'neovim/nvim-lspconfig'
Plug 'hrsh7th/cmp-nvim-lsp'
Plug 'hrsh7th/cmp-buffer'
Plug 'hrsh7th/cmp-path'
Plug 'hrsh7th/cmp-cmdline'
call plug#end()
然后运行:PlugInstall
以安装所有依赖。
配置NVIM-CMP
在你的init.vim
文件里,加入以下配置来启动NVIM-CMP:
lua << EOF
require'cmp'.setup {
sources = {
{ name = 'nvim_lsp' },
{ name = 'buffer' },
{ name = 'path' },
{ name = 'cmdline' }
}
}
EOF
启动LSP服务
配置特定的LSP服务器,例如对于PHP:
require'lspconfig'.php.setup{}
3. 应用案例和最佳实践
- 使用
cmp_nvim_lsp
模块增强LSP的默认行为:
local capabilities = require('cmp_nvim_lsp').default_capabilities()
require('lspconfig')['your_lsp_server'].setup{
capabilities = capabilities;
-- 其他LSP配置...
}
- 自定义键绑定以控制补全菜单:
inoremap <silent><C-Space> <cmd>cmp.toggle()<CR>
inoremap <silent><C-e> <cmd>cmp.confirm()<CR>
- 结合
vim-vsnip
进行snippet支持:
require('cmp').setup {
snippet = {
expand = { func = 'vsnip#expand_or_jump' }
}
}
4. 典型生态项目
- LSP服务器: 如
vim-lsp
,coc.nvim
, 或Neovim自带的LSP客户端。 - Snippet扩展: 如
ultisnips
,snippetsync
, 或本例中的vim-vsnip
。 - 其他补全源: 可以结合
cmp-nvim-lua
,cmp-nvim-autopairs
等进一步丰富补全来源。 - LSP配置: 如
nvim-lspconfig
用于管理和配置各种语言的LSP服务。
通过灵活的配置和与其他组件的集成,NVIM-CMP可成为Neovim开发者提高编码效率的强大工具。要了解更多详情和高级设置,请参考官方仓库的Readme和Wiki。
nvim-cmpA completion plugin for neovim coded in Lua.项目地址:https://gitcode.com/gh_mirrors/nv/nvim-cmp