Skip to content
Language Server Protocol (LSP) support for vim and neovim.
Rust Vim script Python Shell Elixir Scala Other
Branch: next
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Switch default Makefile target to release. Nov 13, 2018
.github Update link. Aug 2, 2018
.vim Update rls settings. Aug 27, 2018
.vscode Optimize for horizontal move. Apr 17, 2018
autoload restore goto jdt content feature Aug 15, 2019
bin Try release macOS on CircleCI. Mar 29, 2018
ci Generate binary sha256 file on before deploy May 9, 2019
doc restore goto jdt content feature Aug 15, 2019
plugin Add LanguageClient_closeFloatingHover() (#865) Aug 15, 2019
rplugin/python3 Create factory method for HighlightDefinition (#686) Dec 29, 2018
src restore goto jdt content feature Aug 15, 2019
tests Update go sample Aug 15, 2019
.gitignore Simplify passing commands. Jul 21, 2018
.travis.yml Add back x86_64-unknown-freebsd to CI. Apr 17, 2019
Cargo.lock (cargo-release) version 0.1.147 Jul 19, 2019
Cargo.toml (cargo-release) version 0.1.147 Jul 19, 2019 Add examples about how to configure for Ruby (#799) Apr 23, 2019
LICENSE.txt Update License to cover contributors. Oct 10, 2017
Makefile Add prefix to echoed messages. Nov 21, 2018 Clearify language server is needed Jun 19, 2019 Restruct approach to get values from params and vim. Mar 4, 2019 Revert "Get proper git SHA when TRAVIS_COMMIT is not available." Sep 4, 2018
install.ps1 (cargo-release) version 0.1.147 Jul 19, 2019 Try to have idempotent install based on version checking Aug 15, 2019
min-vimrc.vim Make example config more compatible. Nov 14, 2018
rustfmt.toml signal usage of rustfmt using empty rustfmt.toml Jul 17, 2019

For legacy python implementation, see branch master.



Language Server Protocol (LSP) support for vim and neovim.


More recordings at Updates, screenshots & GIFs.


Quick Start

Using vim-plug:

Plug 'autozimu/LanguageClient-neovim', {
    \ 'branch': 'next',
    \ 'do': 'bash',
    \ }

" (Optional) Multi-entry selection UI.
Plug 'junegunn/fzf'

Example configuration

" Required for operations modifying multiple buffers like rename.
set hidden

let g:LanguageClient_serverCommands = {
    \ 'rust': ['~/.cargo/bin/rustup', 'run', 'stable', 'rls'],
    \ 'javascript': ['/usr/local/bin/javascript-typescript-stdio'],
    \ 'javascript.jsx': ['tcp://'],
    \ 'python': ['/usr/local/bin/pyls'],
    \ 'ruby': ['~/.rbenv/shims/solargraph', 'stdio'],
    \ }

nnoremap <F5> :call LanguageClient_contextMenu()<CR>
" Or map each action separately
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. Restart neovim/vim and language services will be available right away. Happy hacking!





Language Servers

Note, you will also need language server(s) to take advantages of this plugin. To find list of language server implementations and how to install them, please see and/or


:help LanguageClient for full list of configurations, commands and functions.


See Updates. Subscribe the issue if you want to receive notifications.




The MIT License.

You can’t perform that action at this time.