Language Server Protocol support for neovim and vim.
More recordings at Updates, screenshots & GIFs.
- Non-blocking asynchronous calls.
- Sensible completion. Integrated with deoplete or nvim-completion-manager.
- Realtime diagnostics/compiler/lint message.
- Rename.
- Get identifer info.
- Goto definition.
- Goto reference locations.
- Workspace/Document symbols query.
- Formatting.
- Code Action/Fix.
(Note: Most of the functionality are provided by language servers. Specific language servers may implement only a subset of the features, see http://langserver.org, in which case, featured listed above may not fully functional.)
Using vim-plug
:
Plug 'autozimu/LanguageClient-neovim', { 'do': ':UpdateRemotePlugins' }
" (Optional) Multi-entry selection UI.
Plug 'junegunn/fzf'
" (Optional) Multi-entry selection UI.
Plug 'Shougo/denite.nvim'
" (Optional) Completion integration with deoplete.
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
" (Optional) Completion integration with nvim-completion-manager.
Plug 'roxma/nvim-completion-manager'
" (Optional) Showing function signature and inline doc.
Plug 'Shougo/echodoc.vim'
Example configuration
" Required for operations modifying multiple buffers like rename.
set hidden
let g:LanguageClient_serverCommands = {
\ 'rust': ['rustup', 'run', 'nightly', 'rls'],
\ 'javascript': ['/opt/javascript-typescript-langserver/lib/language-server-stdio.js'],
\ }
" Automatically start language servers.
let g:LanguageClient_autoStart = 1
nnoremap <silent> K :call LanguageClient_textDocument_hover()<CR>
nnoremap <silent> gd :call LanguageClient_textDocument_definition()<CR>
nnoremap <silent> <F2> :call LanguageClient_textDocument_rename()<CR>
Run command nvim +PlugInstall +UpdateRemotePlugins +qa
in shell to install
this plugin. Install corresponding language servers. Start neovim and language
services will be available right away if things go well. Happy hacking!
Please see INSTALL for complete installation and configuration instructions.
Please see http://langserver.org and/or https://github.com/Microsoft/language-server-protocol/wiki/Protocol-Implementations.
See LanguageClient.txt for full list of configurations, commands and functions.
The MIT License.