Neovim을 위한 자동 완성
12833 단어 vimneovimluaprogramming
이 플러그인은 사용하기 좋지만 Javascript 및 Python 때문에 매우 무거워서 다른 솔루션으로 전환하기로 결정했습니다.
솔루션은 nvim-cmp이라는 Lua Plugin입니다.
이 플러그인을 사용하면 최소한의 성능으로 네오빔에 자동 완성 기능을 추가할 수 있습니다. 언어 서버를 다운로드하기만 하면 됩니다.
설치
플러그인을 설치하기 전에 Lua를 먼저 설치해야 합니다.
$ sudo pacman -S lua
다음 중에서 선택할 수 있는 플러그인 관리자가 필요합니다.
nvim-cmp 플러그인을 설치한 후 일부 외부 플러그인을 설치해야 합니다.
" ~/.config/nvim/init.nvim
Plug 'hrsh7th/cmp-nvim-lsp'
Plug 'hrsh7th/cmp-buffer'
Plug 'hrsh7th/cmp-path'
Plug 'hrsh7th/cmp-cmdline'
Plug 'hrsh7th/nvim-cmp'
Plug 'hrsh7th/vim-vsnip'
해당 언어의 서버를 설치한 후 활성화하려면 Lua 코드가 필요할 수 있습니다.
이 코드를 사용하여 init.nvim 파일에 복사하여 붙여넣을 수 있습니다.
또한 확인this page을 잊지 말고 귀하의 언어에 맞는 서버를 얻으십시오.
제 경우에는 rust-analyzer을 설치하겠습니다.
$ sudo pacman -S rust-analyzer
" ~/.config/nvim/init.nvim
lua <<EOF
-- Setup 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.
end,
},
mapping = {
['<C-b>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }),
['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }),
['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }),
['<C-y>'] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping.
['<C-e>'] = cmp.mapping({
i = cmp.mapping.abort(),
c = cmp.mapping.close(),
}),
['<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' },
})
})
-- Set configuration for specific filetype.
cmp.setup.filetype('gitcommit', {
sources = cmp.config.sources({
{ name = 'cmp_git' }, -- You can specify the `cmp_git` source if you were installed it.
}, {
{ name = 'buffer' },
})
})
-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline('/', {
sources = {
{ name = 'buffer' }
}
})
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline(':', {
sources = cmp.config.sources({
{ name = 'path' }
}, {
{ name = 'cmdline' }
})
})
-- Setup lspconfig.
local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities())
-- Replace <YOUR_LSP_SERVER> with each lsp server you've enabled.
require'lspconfig'.rust_analyzer.setup{
capabilities = capabilities,
}
EOF
CTRL+B 또는 CTRL+F를 사용하여 코드 제안에서 스크롤할 수 있습니다.
Reference
이 문제에 관하여(Neovim을 위한 자동 완성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/knassar702/autocompletion-for-neovim-4ljo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)