1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- -- import nvim-cmp plugin safely
- local cmp_status, cmp = pcall(require, "cmp")
- if not cmp_status then
- return
- end
- -- import luasnip plugin safely
- local luasnip_status, luasnip = pcall(require, "luasnip")
- if not luasnip_status then
- vim.notify("没有找到luasnip")
- return
- end
- -- import lspkind plugin safely
- local lspkind_status, lspkind = pcall(require, "lspkind")
- if not lspkind_status then
- vim.notify("没有找到lspkind")
- return
- end
- -- load vs-code like snippets from plugins (e.g. friendly-snippets)
- -- require("luasnip/loaders/from_vscode").lazy_load()
- vim.opt.completeopt = "menu,menuone,noselect"
- cmp.setup({
- snippet = {
- expand = function(args)
- luasnip.lsp_expand(args.body)
- end,
- },
- mapping = cmp.mapping.preset.insert({
- ["<S-Tab>"] = cmp.mapping.select_prev_item(), -- previous suggestion
- ["<Tab>"] = cmp.mapping.select_next_item(), -- next suggestion
- ["<C-b>"] = cmp.mapping.scroll_docs(-4),
- ["<C-f>"] = cmp.mapping.scroll_docs(4),
- ["<C-Space>"] = cmp.mapping.complete(), -- show completion suggestions
- ["<C-e>"] = cmp.mapping.abort(), -- close completion window
- ["<CR>"] = cmp.mapping.confirm({ select = false }),
- }),
- -- sources for autocompletion
- sources = cmp.config.sources({
- { name = "nvim_lsp" }, -- lsp
- { name = "luasnip" }, -- snippets
- { name = "buffer" }, -- text within current buffer
- { name = "path" }, -- file system paths
- }),
- -- configure lspkind for vs-code like icons
- formatting = {
- format = lspkind.cmp_format({
- maxwidth = 50,
- ellipsis_char = "...",
- }),
- },
- })
- -- / 查找模式使用 buffer 源
- cmp.setup.cmdline("/", {
- mapping = cmp.mapping.preset.cmdline(),
- sources = {
- { name = "buffer" },
- },
- })
- -- : 命令行模式中使用 path 和 cmdline 源.
- cmp.setup.cmdline(":", {
- mapping = cmp.mapping.preset.cmdline(),
- sources = cmp.config.sources({
- { name = "path" },
- }, {
- { name = "cmdline" },
- }),
- })
|