Choosing a code editor

An editor is where you write code on your own computer. Any of these will do; the choice matters much less than practising. If you are unsure, start with VS Code. You can always switch later.

VS Code

A free, widely used editor from Microsoft with extensions for almost every language.

Gentle learning curveWebsite ↗

Good

  • Large extension library covering nearly every language and tool
  • Good code completion and a built-in debugger
  • Built-in Git support and terminal
  • Runs on Windows, macOS and Linux
  • Frequent updates and plenty of tutorials online

Less good

  • Uses more memory than lightweight editors
  • Extensions can occasionally conflict with each other
  • Tuning settings to your taste takes a little time

In short: The best default for most people, beginners especially. Start here.

Best for: Beginners, web developers, and most general programming

Neovim

A fast, keyboard-driven editor that runs in the terminal.

Steep learning curveWebsite ↗

Good

  • Very fast, even with large files
  • Everything is done from the keyboard, which gets quick with practice
  • Highly configurable with Lua
  • Works over SSH, so you can edit files on remote servers
  • Good language support once set up

Less good

  • Takes weeks of practice to feel comfortable
  • Needs configuration before it matches a modern editor
  • Its modal editing (separate modes for typing and moving) is unfamiliar at first

In short: Worth learning later if you spend a lot of time in the terminal.

Best for: Back-end developers, system administrators, keyboard-heavy users

Emacs

A long-standing, deeply customisable editor that can be extended to do almost anything.

Steep learning curveWebsite ↗

Good

  • Extensible with its own language, Emacs Lisp
  • Org mode is excellent for notes, planning and documents
  • Magit is a very capable Git interface
  • Stable and actively maintained since the 1980s

Less good

  • The default key bindings are unlike most other software
  • Getting a comfortable setup takes real time
  • Smaller community of new users than VS Code

In short: A good fit if you enjoy shaping your tools. Not the easiest place to start.

Best for: Lisp programmers, researchers, people who like to customise everything

Sublime Text Paid

A quick, lightweight editor with a clean interface.

Gentle learning curveWebsite ↗

Good

  • Starts and responds very quickly
  • Excellent multi-cursor editing
  • Light on memory
  • Command palette for quick access to features

Less good

  • Paid licence for continued use (there is an unlimited trial)
  • Fewer extensions than VS Code
  • Fewer built-in tools such as debugging

In short: Pleasant and fast. VS Code covers most of the same ground for free.

Best for: People who value speed and a minimal interface

Nano

A tiny terminal editor that shows its shortcuts on screen.

Gentle learning curveWebsite ↗

Good

  • Installed on most Linux and macOS systems
  • Shortcuts are listed at the bottom of the screen
  • Easy to exit and save
  • Handy for quick edits to configuration files on a server

Less good

  • Not designed for writing larger programs
  • No code completion or debugging

In short: Great for small edits in a terminal. Use a full editor for day-to-day coding.

Best for: Quick edits on servers and in the terminal

Notepad++

A lightweight, long-running text editor for Windows.

Gentle learning curveWebsite ↗

Good

  • Fast and light on Windows
  • Syntax highlighting for many languages
  • Solid search across files
  • Column (block) editing

Less good

  • Windows only
  • No built-in terminal
  • No language-server support, so code completion is basic

In short: A fine lightweight option on Windows. Choose VS Code for larger projects.

Best for: Quick file editing on Windows