Text Editor

A text editor manipulates plain text: source code, configuration files, namelists, markdown. The distinction from a word processor is that nothing is stored except the characters themselves, which is what makes the output diffable, greppable, and readable by a program that was written before the file existed.

The choice of editor looks like a matter of taste, and for a lot of work it is. It stops being one in research computing, for a specific reason: the files are scattered across places with very different capabilities. A namelist.input sits on a compute cluster reachable only over SSH. The analysis script that reads the output sits locally. The notes about both sit somewhere else again. An editor that only works well in one of those places means switching tools depending on where the file lives, and the switching cost is paid every day.

That is the argument for the terminal-based editors — Neovim, Vim, Emacs — over the graphical ones. Not that they are better editors in the abstract, but that they are the same editor everywhere, including on a machine where you have no display and no permission to install anything.

What actually differentiates them

Once past the editing model, the differences that matter in practice are narrow:

  • Whether it works over a slow SSH connection. Anything that round-trips a language server to a remote host will be unusable on a bad link.
  • Whether the configuration is portable and version-controlled. An editor configured by clicking through preference panes cannot be reproduced on a new machine.
  • Whether large files degrade gracefully. Model output logs and gridded data dumps are routinely tens of megabytes; several popular editors handle this badly.
  • Whether it speaks LSP. This has largely equalised language support across editors, which means the remaining differences really are about the editing model and the configuration story.

The part usually left out

Whichever editor you pick, the return comes from learning it deeply rather than from picking correctly. Most of the productivity difference people attribute to their editor is the difference between someone who has learned their tool and someone who has not. I use Neovim and will argue for it, but the honest version of the argument is that a decade in one editor beats a better editor learned shallowly.

See also: Neovim for the specific case, and the configuration notes for what “configured deeply” ends up looking like.