gitmyhub

noice.nvim

Lua β˜… 5.8k updated 7mo ago

πŸ’₯ Highly experimental plugin that completely replaces the UI for messages, cmdline and the popupmenu.

Noice is a plugin for Neovim, a highly configurable text editor used primarily by programmers. The plugin replaces the default appearance of three parts of the Neovim interface: the command line input area at the bottom of the screen, the pop-up menu that appears when you are typing commands or completions, and the area where status and error messages are displayed.

By default, Neovim shows these elements in fairly plain, fixed positions. Noice replaces them with floating windows and popups that can be positioned, styled, and configured in detail. Messages from the editor can be routed to different views depending on their type: errors might appear as notifications in the corner of the screen, while long command output gets sent to a separate split window instead of requiring you to page through a prompt. The command line input gains syntax highlighting for Vim commands, Lua code, regular expressions, and shell commands, along with customizable icons for different command types.

The plugin keeps a history of messages that you can review with a :Noice command, and that history can also be opened in a fuzzy finder if you use Telescope or fzf-lua for navigation. Status bar components are included if you want to show information about recent messages in your editor status line.

Noice requires Neovim version 0.9.0 or later and depends on a companion plugin called nui.nvim for rendering its windows. A notification plugin called nvim-notify is optional but recommended. The plugin is described as highly experimental because it uses a newer Neovim API that may still have edge cases and known issues. The README recommends running the built-in health check after installation to catch common configuration problems.

Installation uses any standard Neovim plugin manager. Configuration is done in Lua and has many options, including preset bundles for common setups. The full README is longer than what was shown.