Collin Donnell

March 29, 2021

The state of Mac code editors

I like to think of myself as a typist who doesn’t ask for much. The last thing I ever wanted to be was another programmer, dissatisfied with the state of text editors for macOS in 2021, writing yet another article comparing code editors. Regardless of my best intentions, however, here we are.

My short answer is this: it’s pretty bleak out there. Whatever age we’re in right now in terms of text editors with modern features for the Mac, it is emphatically not golden.

Here’s what I want from an editor:

  • Hit ⌘R to run a script.
  • Reasonable autocomplete.
  • Auto-indenting as I type.
  • Be a Mac-assed Mac app, or at least not an Electron app.
  • Supports projects and individual files equally well.

Based on my requirements, I can rule out a few of the possibilities right away:

  • Electron apps: Visual Studio Code, Atom, et al.
  • Non-Mac-like native apps: Sublime Text, CodeKit, a bunch of others, I’m sure.
  • Java apps: So, anything by Jetbrains. They’re all big heavy IDEs written in Java that they look and feel like it.

So what contenders remain?
  • Nova, the new code editor by Panic.
  • CotEditor, a free, open-source text editor for macOS.
  • BBEdit, the venerable text editor from Bare Bones Software.
  • TextMate 2, the once mythical creature, come to life.
  • CodeRunner, a paid code editor that’s been around a few years.

Nova is a recently released editor by Panic. On its face, it’s very exciting. Nova is responsive, looks good, and has support for lots of languages. My main issues are that it’s too project-focused, and there’s no “run in Nova.” 

If you’re in a project, you can set up tasks, which are fine, but that doesn’t work at all for individual scripts, 

Nova does have autocomplete, but it relies heavily on third-party extensions for basic language support. That was a bold choice for a brand new editor that’s starting from zero. For obscure languages, that choice makes sense to me. Good autocomplete for languages like Python and Ruby, however, should be built-in. At the least, there should be first-party from Panic users can expect to get regular maintenance.

Panic is the follow-up to Coda, an editor that focused on the web and making static websites. Although Nova is called a code editor, it still feels like the only thing that is a first-class citizen is making websites by hand with HTML, CSS, and JavaScript. It has no concept of things like virtual environments in Python, which effectively makes it unusable for serious development. My feeling is the people at Panic just don’t use those kinds of languages a lot in their work, making it hard for them to know what’s needed. 

I wanted to love this app, and I’m sure I’ll keep trying to use it, but it’s just not there yet. Nova is still really young, though, and I don’t see any reason it can’t add the things I wish it had in the future.

CotEditor is arguably the best looking of the bunch if what you want is an app that uses native Mac controls. It’s the only editor on my list whose UI updated for Big Sur. It is Mac-assed to its core — it even supports versions (remember that?). It’s an outstanding text editor. 

The problem what CotEditor is that it’s missing almost all of the features you’d want for development. You can’t run scripts, and there is zero-autocomplete and no automatic indentation. It has no features beyond syntax highlighting for coding. One thing I’ve only seen in CotEditor is a “give execute permissions” checkbox in the save dialog, which I now think all of these apps should have.

Once again, if they could add some or all of these features, CotEditor would be a killer app.

BBEdit is what I use to do regex on a big file or just type something up quickly. It launches fast, even with huge files, and so it’s great for that. The UI is really behind the times though, autocomplete is only through Ctags —which I can’t be bothered with — and there’s no auto-indenting. I don’t think I’ll ever stop using BBEdit but I also don’t see myself using it for scripting.

TextMate 2
TextMate 2 feels mostly maintained. It gets updated every so often, but the UI is pretty creaky, and it has weird UI bugs that never get fixed, hence the mostly. Its features were probably great for 2006, but pretty behind the times today. It can run things with ⌘R, but there’s no autocomplete. It does have great auto-indenting, however, so that’s a huge win.

CodeRunner seems like a sleeper to me. It has a ton of features (a debugger!). Autocomplete is of varying quality for different languages but doesn’t require installing anything. Python support is outstanding. You can have custom launch scripts, so it could work for projects as well as individual scripts, but that’s not what it’s made for. If what you want to do is write individual Python or Shell scripts, this is the one to use. I’d keep it around just for that, even if I didn’t use it for anything else.

I’m about as confused as I was when I started writing this. There just aren’t any great options. I’ll probably keep trying to use Nova for anything project-based and hope they update it to be better for things that aren’t static websites. CodeRunner is hard to beat for one-off scripts, so I’ll use it for that. BBEdit is sticking around for regex on big files. I’ll possibly TextMate 2 if the others all suck at auto indenting the language I’m using too much.

At the end of this, I wanted to say that I had a single text editor that would mostly do what I want, but here we are, probably using four different ones for different tasks. Fantastic.