Modern Neovim — User Interface and PDE

Configure a Personalized Development Environment (PDE) with a modern user interface.

6 min readJan 18


Modern Neovim — User Interface and PDE

In this article, we continue our journey to set up a modern development environment using Neovim. We will focus on configuration recipes to fine-tune the user interfaces and customize Neovim to be a PDE (Personalized Development Environment).

This article is part of the Modern Neovim series.

The Neovim configuration files are available in this repository.

Getting Started

In the earlier article, we set up LSP and use Docker to set up a remote development environment. We also fine-tune the window bar and status line to display the current code context and the connected language servers.

For a better and more personalized developer experience, we will configure plugins to improve the user interface and use lazy.nvim to create a personalized development environment.


For a better development experience, let’s configure semantic highlighting and document highlighting.

lazy.nvim provides flexibility to configure plugins in different files, allowing us to easily extend our configuration.

Let’s create the lua/plugins/extra/ui/highlight.lua file.

In the lua/config/lazy.lua file, we add the UI extensions.

require("lazy").setup {
spec = {
{ import = "plugins" },
{ import = "plugins.extras.ui" },
  • We use vim-illuminate to highlight uses of the word under the cursor using either LSP, Tree-sitter, or regex matching.
  • We use hlargs.nvim for semantic highlighting for language servers that do not support semantic tokens (:h lsp-semantic-tokens).

Check out this article for details!




Software engineer, Data Science and ML practitioner.