5 Comments

A Month with the Atom Editor

atom editor

Vim is a good friend of mine. When we met during my freshman year of college at MTU, we quickly hit it off. I never looked back with any regret at my tiny TI-85 screen, Notepad, or QBasic where I first tinkered with bending computing devices to my whims. Since then I have tried other editors, and even used a few for extended periods for a variety of reasons (e.g., Kate because of its SSHFS and KDE tie-ins, Visual Studio for its strength with all things Microsoft). Still, through it all, Vim has been my go-to editor for nearly 15 years.

I have been using Atom almost exclusively for the past month — without vim-mode. This was an intentional decision on my part. I didn’t have any complaints about how Vim had been working for me prior to picking up Atom. It, along with our built-to-Atomic-tastes configuration, did great navigating the mixed mobile & web project environment I was working in. I was just feeling ready to try something different when Atom came on the scene — something that wasn’t vim and didn’t work like vim. Plus, I dig the name and logo. ;) I figured, at the worst, I’d return to Vim after a while with a renewed appreciation for everything that makes it, well, Vim.

So, how has it gone?

Atom’s Many Strengths

Overall, I’m very impressed with Atom. For an editor to work for me day-to-day, the little things have to work well. The tabs, split panes, fuzzy finder, tree view, search & replace, and keyboard shortcuts have generally worked as I expect in Atom. It has the basics well enough covered that my knowledge of the keyboard shortcuts is a larger limiting factor to my effectiveness.

The team at GitHub has done a lot right, I’ve enjoyed the experience of using it, and I think Atom is set up for a strong future.

Atom’s Extensibility

Atom is open source and has extensibility built in as a core value. We know this model can work, as evidenced by the longevity of Vim and Emacs. That gets high marks in my book.

Even better, the extensibility of Atom is extremely approachable. I haven’t done much with Vim or Emacs aside from configuring existing packages and extensions, either because I haven’t found the need or the time. Atom being a young application gave me plenty of reason, and my familiarity with web development made the time a small issue. I published my first package, project-colorize, within an hour or two of first looking at the package creation tutorial. Admittedly, the package only contains six lines of original code. But, that brings me to another point…

There are a lot of open source JavaScript libraries. The web has become a huge app platform over the past decade, with nearly all client-side code needing to be written in (or eventually become) JavaScript. I was able to build a package that I find useful and interesting with only six lines of new code, and I think that represents a huge amount of potential for rapid innovation. I’m excited to see what the package ecosystem develops into.

Packages

The core editor experience is solid, as it has to be, but the packages will make or break Atom. Here are a few I’ve been enjoying:

  • git-blame – Toggle git-blame annotations in the gutter of Atom editor.
  • zen – Distraction-free writing.
  • project-colorize – Color the tab bar background to differentiate between different open projects in Atom.

Drawbacks of Atom Editor

All that said, Atom is not perfect. It’s still a relatively young project, and there have been things that pushed me back to Vim briefly. They’ve all been pretty minor. A few examples include:

  • Needing to open files > 2mb
  • Wanting block selection with Vim’s familiar keyboard navigation
  • Atom crashing, usually due to a non-core package misbehaving

I’m optimistic that this is more than a fling. There are still things that Atom just can’t do for me that Vim can (e.g., remote pairing, work in a non-GUI environment), but over time I expect that list will shrink. I’m expecting to continue using Atom as my primary editor for a good while longer, and hope to find some time to put together another interesting package or two. Thanks for sharing your efforts with us all, GitHub team and contributors!