ARTICLE

Atom: My New Favorite Code Editor

by | Mon 16 Nov 2015

As a hobbyist Python programmer, over the years I have tried a variety of different editors. Back in the day I used to use Eclipse with the PyDev plugin. I then moved on to use GEdit with a few extensions switched on. After that I moved to Geany. I have to admit, much to the shock of some of you, I never really stuck with Sublime, despite a few attempts.

My Requirements

Going into this I had a set of things I look for in an editor that tends to work well with my peanut-sized brain. These include:

  • Support for multiple languages.
  • A simple, uncluttered, editor with comprehensive key-bindings.
  • Syntax highlighting and auto-completion for the things I care about (Python, JSON, HTML, CSS, etc).
  • Support for multiple files, line numbers, and core search/replace.
  • A class/function view for easily jumping around large source files.
  • High performance in operation and reliable.
  • Cross-platform (I use a mixture of Ubuntu and Mac OS X).
  • Nice to have but not required: integrated terminal, version control tools.

Now, some of you will think that this mixture of ingredients sounds an awful lot like an IDE. This is a reasonable point, but what I wanted was a simple text editor, just with a certain set of key features…the ones above…built in. I wanted to avoid the IDE weight and clutter.

This is when I discovered Atom, and this is when it freaking rocked my world.

The Basics

Atom is an open source cross-platform editor. There are builds available for Mac, Windows, and Linux. There is of course the source available too in GitHub. As a side point, and as an Ubuntu fan, I am hoping Atom is brought into Ubuntu Make and I am delighted to see didrocks is on it.

Atom is simple and uncluttered.

Atom is simple and uncluttered.

As a core editor it seems to deliver everything you might need. Auto-completion, multiple panes, line numbers, multiple file support, search/replace features etc. It has the uncluttered and simple user interface I have been looking for and it seems wicked fast.

Stock Atom also includes little niceties such as markdown preview, handy for editing README.md files on GitHub:

Editing Markdown is simple with the preview pane.

Editing Markdown is simple with the preview pane.

So, in stock form it ticks off most of the requirements listed above.

A Hackable Editor

Where it gets really neat is that Atom is a self-described hackable text editor. Essentially what this means is that Atom is a desktop application built with JavaScript, CSS, and Node.js. It uses another GitHub project called Electron that provides the ability to build cross-platform desktop apps with web technologies.

Consequently, basically everything in Atom can be customized. Now, there are core exposed customizations such as look and feel, keybindings, wrapping, invisibles, tabs/spaces etc, but then Atom provides an extensive level of customization via themes and packages. This means that if the requirements I identified above (or anything else) are not in the core of the editor, they can be switched on if there are suitable Atom packages available.

Now, for a long time text editors have been able to be tuned and tweaked like this, but Atom has taken it to a new level.

Firstly, the interface for discovering, installing, enabling, and updating plugins is incredibly simple. This is built right into Atom and there is thankfully over 3000 packages available for expanding Atom in different ways.

Searching for and installing plugins is built right into Atom.

Searching for and installing plugins is built right into Atom.

Thus, Atom at the core is a simple, uncluttered editor that provides the features the vast majority of programmers would want. If something is missing you can then invariably find a package or theme that implements it and if you can’t, Atom is extensively hackable to create that missing piece and share it with the world. This arguably provides the ability for Atom to satisfy pretty much about everyone while always retaining a core that is simple, sleek, and efficient.

My Packages

To give you a sense of how I have expanded Atom, and some examples of how it can be used beyond the default core that is shipped, here are the packages I have installed.

Please note: many of the screenshots below are taken from the respective plugin pages, so the credit is owned by those pages.

Symbols Tree View

Search for symbols-tree-view in the Atom package installer.

This package simply provides a symbols/class view on the right side of the editor. I find this invaluable for jumping around large source files.

symbols

Merge Conflicts

Search for merge-conflicts in the Atom package installer.

A comprehensive tool for unpicking merge conflicts that you may see when merging in pull requests or other branches. This makes handling these kinds of conflicts much easier.

merge

Pigments

Search for pigments in the Atom package installer.

A neat little package for displaying color codes inline in your code. This makes it simple to get a sense of what color that random stream of characters actually relates to.

pigments

Color Picker

Search for color-picker in the Atom package installer.

Another neat color-related package. Essentially, it makes picking a specific color as easy as navigating a color picker. Handy for when you need a slightly different shade of a color you already have.

color

Terminal Plus

Search for terminal-plus in the Atom package installer.

An integrated terminal inside Atom. I have to admit, I don’t use this all the time (I often just use the system terminal), but this adds a nice level of completeness for those who may need it.

term

Linter

Search for linter in the Atom package installer.

This is a powerful base Linter for ensuring you are writing, y’know, code that works. Apparently it has “cow powers” whatever that means.

linter

In Conclusion

As I said earlier, editor choice is a very personal thing. Some of you will be looking at this and won’t be convinced about Atom. That is totally cool. Live long and edit in whatever tool you prefer.

Speaking personally though, I love the simplicity, extensibility, and innovation that is going into Atom. It is an editor that lets me focus on writing code and doesn’t try to force me into a mindset that doesn’t feel natural. Give it a shot, you may quite like it.

Let me know what you think in the comments below!

If you thought this was interesting, you might want to Join As a Member. This will ensure you never miss an article, you get access to exclusive member-only content, early-access to new projects and member-only events, and the possibility of winning free 1-on-1 workshops. It is entirely FREE and I will never sell your information or spam you (those people suck). Find out more here.

An invitation-only accelerator that develops industry-leading community engagement and growth via personalized training, coaching, and accountability...all tailored to your company's needs.

Want to read some more?

Boost Online Community Growth with the Bucket Strategy

Boost Online Community Growth with the Bucket Strategy

Are you a community manager, community advocate, or developer relations (Dev Rel) professional struggling to come up with creative social media ideas? Effective community management involves consistently generating engaging social media content, but with a million...

Community Strategy & Management with CRM Tools

Community Strategy & Management with CRM Tools

I once sat down with a fellow community manager who told me, "The tools you use can make or break your community strategy." And she was spot on. Community management isn't just a buzzword; it's an art form that requires the right blend of technology, strategy, and...

Decoding Community Metrics: Data-Driven Growth Strategies

Decoding Community Metrics: Data-Driven Growth Strategies

In the bustling tech landscape, where buzzwords flutter like a swarm of bees, a few terms stand out not just for their buzz but for their genuine impact: "Community Metrics" tops that list. But why zero in on these metrics? They're the compass that guides your...

Online & Open Source Community Management: Simplified Strategies

Online & Open Source Community Management: Simplified Strategies

Ever caught yourself overwhelmed by a seemingly insurmountable pile of tasks? You're not alone. In the demanding worlds of DevRel and open source community management, stress and the nagging doubts of imposter syndrome can frequently surface. However, it's crucial to...