Neovim 0.12 with native plugin manager

Neovim 0.12 introduces a native plugin manager and puts an end to "Press ENTER". The goal is an out-of-the-box editor.

listen Print view
Flying toasters with wings and toast, displaying letters and characters on their screens.

(Image: heise medien)

3 min. read

Neovim has been released in version 0.12. Under the motto "The year of Nvim OOTB" (Out of the box), the release expands the functionality of the open-source editor. The most important innovations: a native plugin manager and the end of disruptive UI blockages.

Neovim is a fork of the text editor Vim. The project aims to modernize the historical codebase, relying on an asynchronous architecture and API-driven extensibility. Lua serves as the configuration and scripting language.

The central innovation is the minimalist plugin manager vim.pack integrated into the core. Previously, users had to download and initialize external package managers like packer or lazy.nvim via script for almost every setup – the so-called bootstrapping. With vim.pack, a declarative Lua configuration is sufficient to load and manage extensions directly from GitHub. External managers are now only necessary for complex setups, for example with extensive lazy loading.

Furthermore, Neovim 0.12 replaces the notorious "Press ENTER" message with an experimental message UI. The new interface (vim._extui) replaces around 3000 lines of old C code and must be activated manually:

require('vim._extui').enable({})

Without activation, the old behavior remains – but users can disable it via :set cmdheight=0. In the new UI, long messages are displayed by default in the command line with an overflow indicator (...). With cmdheight=0 or explicit configuration (msg.pos = 'box'), they appear in a floating window in the bottom right instead.

Those who want to view the complete message history or long lists – for example, open buffers via :ls – will in the future open a regular, interactive editor window using the shortcut g<. It replaces the previous rigid pager. The new UI uses the Tree-sitter parser for Vimscript to color-code the command line – for example, for commands and arguments. However, this feature is only active when vim._extui is turned on.

Additionally, there are two new commands: :restart restarts the editor process along with its configuration, without closing the terminal session. :connect simplifies connecting external GUIs or headless instances via RPC.

Videos by heise

Under the hood, Neovim is currently revising the system for remote plugins. These extensions run in external languages like Python or Node.js and communicate with the editor via MessagePack-RPC. Previously, their installation required a manual registration step: the command :UpdateRemotePlugins updated a manifest file – an error-prone intermediate step. For version 0.13, the project plans to use Lua as a native plugin host – :UpdateRemotePlugins should then be obsolete.

All information about Neovim 0.12 and planned updates can be found on the project's website and in the release notes on GitHub.

(fo)

Don't miss any news – follow us on Facebook, LinkedIn or Mastodon.

This article was originally published in German. It was translated with technical assistance and editorially reviewed before publication.