pete > guides > text editors

To the best of my knowledge, many programming classes actively or passively recommend using an IDE (integrated development environment) for writing code. The alternative is to use a standalone text editor, but please for the love of Turing not NotePad or Word. Personally, I prefer a standalone text editor because IDEs insert excessive insulation between the programmer and what’s really going on.

The vital features are:

Other features you might find useful in time:

Predictably, Wikipedia has a lengthy comparison of text editors.

Popular options include vim, emacs, Atom, and VSCode.

Tom Christiansen (of Perl fame) on good interfaces, focusing primarily on text editors: Zenclavier: Extreme Keyboarding.

Remote editing

Or: what if I want to edit a file stored on another machine?

The naive approach is to download the file (likely using scp or rsync), edit and save the file, and then upload the new version (again using scp or rsync). This can get tedious and can impede rapid development. Some editors, like vim and emacs, run in a terminal window, so you can just ssh to the machine on which the file is stored and edit it there. It is less straightforward to get editors like Atom and VSCode to work in this way. The good news is that both Atom and VSCode allow one to edit files remotely: you tell the program the name of the machine on which the file is stored, the program connects to that machine for you (using ssh), and presents the files it finds on that other machine as if they lived on your machine.

Here are Microsoft’s instructions on setting up remote editing in VSCode:

Here are instructions for setting up remote editing in Atom (specific to Midd):

In both cases, the "hostname" or "IP address" refers to the name of the remote machine: depending on the class, you will probably use either or You will use the same username (without the part) and password that you use to access your email.

And here I will collect fun, snarky links that elucidate why vim is worth at least trying, if not using primarily.

Last modified: