nvim cmp
v0.0.1
用 Lua 寫的 neovim 補全引擎插件。完成來源是從外部儲存庫安裝並「來源」的。
cmp.mapping.preset.*
是預先定義的配置,旨在模仿 neovim 的原生行為。可以更改,恕不另行通知。請自行管理按鍵映射。此範例配置使用vim-plug
作為插件管理器,使用vim-vsnip
作為程式碼片段插件。
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
查看 Wiki 和nvim-cmp
GitHub 主題。
請參閱維基百科。