A list of less commonly known modern code editors which support modal editing.
In an earlier article, I talked about embedding Neovim in browsers and Visual Studio Code using
VSCode Neovim. For developers, there are simply too many code editors for us to choose from. From Vim, Emacs till more modern code editors like Atom, Sublime, Neovim, VSCode just to name a few.
Personally, I would encourage developers to learn and use modal editing. Vim/Neovim supports this natively. For Emacs we have
evil-mode, and for VSCode we can use plugins like
VSCode Neovim. Almost all modern code editors support modal editing in one way or another.
In this article let’s go through a few less commonly know modal code editors.
Github Star: ≥ 7.1k
Kakoune is a text editor inspired by Vim. It implements Vi’s “keystrokes as a text editing language” model. It can operate in two modes, normal and insertion. In insertion mode, keys are directly inserted into the current buffer. In normal mode, keys are used to manipulate the current selection and to enter insertion mode.
Kakoune has built-in contextual help, as-you-type completion, syntax highlighting for several programming languages. You can also install plugins to further customize
- Multiple selections as a central way of interacting
- Powerful selection manipulation primitives
- Select all regex matches in current selections
- Keep selections containing/not containing a match for a given regex
- Split current selections with a regex
- Text objects (paragraph, sentence, nestable blocks)
- Powerful text manipulation primitives
- Align selections
- Rotate selection contents
- Case manipulation
- Piping each selection to external filters
- Client-Server architecture
- Multiple clients on the same editing session
- Use Tmux or your X11 window manager to manage windows
- Simple interaction with external programs
- Automatic contextual help
- Automatic as you type completion
- Syntax Highlighting
- Supports multiple languages in the same buffer
- Highlight a buffer differently in different windows
Github Star: ≥ 6k (currently in alpha)
Onivim 2 aims to bring the speed of Sublime, the language integration of VSCode, and the modal editing experience of Vim together, in a single package.
libvim to manage buffers and provide authentic modal editing, and features a fast, native front-end. In addition,
Onivim 2 leverages the VSCode Extension Host process in its entirety - meaning, eventually, complete support for VSCode extensions and configuration.
- Modern UX — an experience on par with modern code editors like VSCode and Atom
- VSCode Plugin Support — use all of the features of VSCode plugins, including language servers and debuggers
- Cross-Platform — works on Windows, OSX, and Linux
- Batteries Included — works out of the box
- Performance — no compromises: native performance, minimal input latency
- Easy to Learn — Onivim 2 should be comfortable for non-Vimmers, too!
Github Star: ≥ 2.3k
Helix is a Kakoune/Neovim inspired editor, written in Rust.
It supports multiple selections by default, based on
Kakoune and syntax highlighting and code editing using Tree-sitter. LSP support is also built-in.
- Vim-like modal editing
- Multiple selections
- Built-in language server support
- Smart, incremental syntax highlighting and code editing via tree-sitter
Due to its design, Neovim can be easily embedded into other applications. There are many GUIs available for Neovim. Below I listed those GUIs that I tried and found quite useful.
Github Star: ≥ 4.2k
Neovide is a simple graphical user interface for Neovim, written in Rust.
It provides all standard full features of Neovim. On top of that,
- Supports ligatures and full HarfBuzz backed font shaping.
- Animated cursor
- Smooth scrolling
- Animated windows
- Blurred floating windows
- Emoji support
- WSL support
- Remote TCP support.
If you are a Neovim user, do check out this editor.
Github Star: ≥ 5.3k
VimR is a Neovim GUI for macOS. Besides all the Neovim features, it supports
- Markdown preview
- Generic HTML preview (retains the scroll position when reloading)
- Fuzzy file finder a la Xcode’s “Open Quickly…”
- Trackpad support: Pinching for zooming and two-finger scrolling.
- Ligatures: Turned off by default. Turn it on in the Preferences.
- Command-line tool.
- (Simple) File browser
- Flexible workspace model a la JetBrain’s IDEs
Github Star: ≥ 1.1k
Besides all the Neovim features, it supports
- Markdown Preview
- Smooth pixel scroll (Support for both touchpad and Vim scroll command reactions.)
- Workspace feature which manages multiple nvim
- External File Explorer
- Support Ligature
- Built-in Indent guide
- Support High DPI scaling