Plugins for Vim and Neovim

Neovim is my main text editor and over the years I have written a number of plugins, both for Vim and Neovim.

Vim and Neovim

The following plugins will work for both Vim and Neovim. If they don't that's considered a bug.


GNU Guile is an implementation of the Scheme programming language and the official extension language of the GNU project. Like all Scheme implementations it adds its own extensions on top of Scheme. This plugin automatically detects whether a Scheme file is a Guile program and adds syntax highlighting for special Guile forms.

The file type of Guile buffers will be scheme.guile, this way users can keep using their existing Scheme plugins and settings while still making use of Guile-exclusive plugins and settings.


Read document in the Info format from inside Vim. GNU Texinfo is the official format for writing documentation for GNU projects such as Bash or GNU Make, but it is also used by a number of other projects not part of GNU.

Info is the on-line format produced by Texinfo and traditionally it was read using either a standalone terminal application or Emacs. With Info.vim you get a first-class Vim experience. The plugin provides a way of reading documents and an API for building upon it.


Adds better integration for Jinja templates by augmenting the existing file type with .jinja rather than only using jinja. This way you could have for for example an HTML- and a TeX file with Jinja snippets and their extensions would be html.jinja and tex.jinja respectively.

This is useful because it allows users to keep their settings and plugins for the parent file type. In contrast, the official plugin sets the file type to jinja or htmljinja instead.


A plugin for NCM2 (a completion manager) which provides asynchronous completion of Common Lisp source code. It uses the Vlime plugin to get completion candidates.

Neovim only

These plugins only work on Neovim. If anyone wants to submit a patch to make them work for Vim as well be my guest.


Turn your Neovim into an interactive Awk development environment. You can edit your Awk scripts, edit the input text, and see the result displayed immediately in an output buffer.


A frontend to nvim-dap, that dynamically creates configuration for the Python debug adapter debugpy. It does its best to always do The Right Thing for the most common use-cases, but an escape hatch is provided so users can define their own sub-commands.


Use your desktop's native notification system for Neovim notifications.


Neovim remote client for Racket. It allows you to control Neovim from Racket and write Neovim plugins in Racket instead of Vimscript.

This is both a Racket library, as well as a Neovim plugin, so you will need to install it twice, or set it up such that both programs can find it. The installation instructions explain it all.


Alternating highlighting for text delimiters ("rainbow parentheses") powered by Tree-stter. We are not limited to just parentheses, a delimiter can be anythingk, such as a tag in HTML. The plugin is very hackable, users can add their own queries and highlighting strategies without altering the original source code.


Read your pycodestyle configuration and store it as a dictionary. This plugin is useful as a building block in your Neovim configuration: it allows you to set your editor settings according to the project's Python settings. Don't try to keep your linter and editor in sync, just use your linter configuration as your editor configuration.


The poor-man's REPL integration, this plugin aims to provide a simple universal interface to all possible REPLs. It does so by building on top of Neovim's terminal emulator, which has its limitations, but in return will work with pretty much any REPL. If you can run it in a terminal, you can run it in REPL.nvim as well.

A number of common REPLs are supported out of the box, and the exposed API allows users or other plugins to define their own REPL setting in a few lines of code. Settings for existing REPLs can be overridden according to one's own personal preferences.


A Neovim frontend to Quicklisp, the Common Lisp package manager. It allows users to install, remove and query Common Lisp packages straight from the Neovim command line.