Table of contents
I want to share three built-in neovim features that I think are under the category of "quality of
life improvements". They are live substitution, highlight yanked text, and the built-in
language server protocol support.
Live Substitution
By default, vim’s :substitute command only modifies the document when you execute the command by
pressing Enter (<CR>). In neovim, you can update the document interactively. neovim also
shows you a preview window of all the changes you are going to make in the document.

Just add the following option to your vimrc file.
set inccommand=splitHighlight Yanked Text
[If you want to use this feature in neovim v0.4.x or in vim 8, you can do so with
this or
this plugin. Also, check out this well written
post on how this works under the
hood.]{.aside}
With the latest version of neovim, you have the ability to highlight yanked text without using any plugins.

At the time of writing, you'll need a v0.5.0 or the nightly1 release of neovim for
this feature.
nvim --version | head -1NVIM v0.5.0-556-ge78658348You can add the following in your vimrc to enable this feature:
augroup LuaHighlight autocmd! autocmd TextYankPost * silent! lua require'vim.highlight'.on_yank()augroup ENDLanguage Server Protocol
neovim has a built-in implementation of the
Language Server Protocol client and
default configurations for over 50 languages.

At the time of writing, you'll need a v0.5.0 or the nightly release of neovim for this
feature.
nvim --version | head -1NVIM v0.5.0-556-ge78658348While technically you can configure the LSP client straight from your vimrc file, it is easier to
use configurations from the neovim/nvim-lsp repository that
the neovim developers maintain.
In order to set this up you need to do 3 things:
-
Add the
neovim/nvim-lspplugin:Plug 'neovim/nvim-lsp' -
Run
:LspInstall {servername}::LspInstall sumneko_lua:LspInstall julials:LspInstall nimls:LspInstall rust_analyzer:LspInstall vimls:LspInstall pyls -
Set up configurations with options in your
vimrc:lua <<EOFlocal nvim_lsp = require'nvim_lsp'nvim_lsp.sumneko_lua.setup()nvim_lsp.julials.setup()nvim_lsp.nimls.setup()nvim_lsp.vimls.setup()nvim_lsp.pyls.setup{settings = {pyls = {configurationSources = {pycodestyle,flake8}}}}EOF
Footnotes
-
Precompiled binaries are available on the github releases page. ↩