Modal Code Editors for Developer

A list of less commonly known modern code editors which support modal editing.

Photo by Matthew Kwong on Unsplash

Overview

In an earlier article, I talked about embedding Neovim in browsers and Visual Studio Code using Firenvim and 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 VSCodeVim or 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.

Kakoune

Github Star: ≥ 7.1k

Kakoune

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 Kakoune.

Kakoune Contextual Help
  • 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
  • Indentation
  • 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
  • Macros
  • Hooks
  • Syntax Highlighting
  • Supports multiple languages in the same buffer
  • Highlight a buffer differently in different windows

Onivim 2

Github Star: ≥ 6k (currently in alpha)

Onivim 2

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.

It uses 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!

Helix

Github Star: ≥ 2.3k

Helix

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

Neovim GUIs

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

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.

Neovide Ligature Support
Neovide Smooth Scrolling
Neovide Blurred Floating Windows

Github Star: ≥ 5.3k

VimR

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

Goneovim is a Neovim GUI written in Go, using Qt binding for Go.

Goneovim

Besides all the Neovim features, it supports

  • Markdown Preview
  • Minimap
  • Smooth pixel scroll (Support for both touchpad and Vim scroll command reactions.)
  • Workspace feature which manages multiple nvim
  • External File Explorer
  • Scrollbar
  • Support Ligature
  • Built-in Indent guide
  • Support High DPI scaling

Programmer and occasional blogger.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store