1
Write a post

Best Text Editor? Atom vs Sublime vs Visual Studio Code vs Vim

Published Sep 28, 2016Last updated Jan 18, 2017
Best Text Editor? Atom vs Sublime vs Visual Studio Code vs Vim

With so many programming text editors out there today, the seemingly simple task of choosing one suddenly becomes daunting and overwhelming.

While a straightforward answer to the "what is the best text editor for developers?" question doesn't exist, in this post, I will share with you a side by side comparison between four of most popular ones out there: **Atom, Sublime, Visual Studio Code, and Vim. **

After reading the list of pros and cons, I hope you will have enough information to make a choice that best fits your needs.

Disclaimer: As with any comparison, some of these views are subjective and are mostly based on my personal preferences. I'm someone who writes for the web (JS, CSS, HTML, etc.) using Sublime for Mac, so my perspective is a bit skewed towards what I'm used to. That said, I've tried to be as objective as possible.

Atom

text editor

  • Url: https://atom.io/
  • Cost: Free (MIT Licence)
  • Developer: GitHub
  • Platforms: OSX, Windows, Linux

Atom is described as:

A hackable text editor for the 21st Century

Atom is a relative newcomer to the world of text editors but it's gained huge momentum since it was first released in 2014. Let's start by reviewing its main features:

Packages

text editor

Ability to add additional features to an edit is very important, and this is an area that Atom shines at. The package manager is installed by default and to make things even better, all packages are hosted on Github.

At the time of writing, they had a whopping 6,452 packages and themes available! Packages are so fundamental to Atom, that core features like Tree View and Settings View are simply pre-installed packages.

Editing and Workflow

In general, everything in Atom is rather smooth. Biggest pain point? Figuring out which additional packages need to be installed when starting from scratch.

For example, I like minimap to help me visually skip to parts of a file. I also needed to set up some autocompletion using Autocomplete +. I'm someone who often works on a couple of files simultaneously so the ability to set up split pane editing is a must. It's a feature Atom supports nicely.

enter image description here

Another nice feature of Atom that I've found lacking in Sublime is the drag/drop file/folder support in the tree view. I'm so used to not having it in Sublime that being able to shift things around is a real treat!

Finally, the git integration is great... it is made by GitHub after all!

Customization

Ability to customize an editor to match your development flow and style is essential. Personally, I always need to enable things like "trim whitespaces on save", "save on lost focus of file", both of which are easy to set up and override in Atom.

Atom has a great doc page on how to even override the styles (Atom's written in pure HTML/CSS on top of Chromium) - http://flight-manual.atom.io/using-atom/sections/basic-customization/

text editor

Overall, I love how configurable Atom is—ability to override settings on a per-file type basis is great! For example, different indentation for JS vs CSS vs HTML is very simple with Atom.

Performance

If there's one bone to pick with Atom, it's that at times, it feels slow. Sometimes, opening a file or switching between tabs has enough of a lag to feel painful (especially when you're in full swing development action). When I tried Atom when it was first released, performance was a problem. It has certainly gotten better since, but the frustration is still there.

Verdict

Atom is a great tool, especially for those who want to customize their editor easily, and beyond what others provide. As a web developer, the freedom to tweak, add, and extend your editor gives an incredible feeling of power. I also love its docs. The Atom Flight Manual provides a great starting point for new users.

The greatest downside for me would still be the performance issues, but for a free editor, Atom shines brightly!

Sublime

text editor

  • Url: https://www.sublimetext.com/
  • Cost: $70 license fee with free trial
  • Developer: Jon Skinner former Google Engineer
  • Platforms: OSX, Windows, Linux

Sublime was released back in 2007, so it's had almost a decade to mature. According to Stackoverflow's 2016 developer survey it's the 3rd most popular Development Environment.

V3 Beta is its latest version and while it's been in beta for a long time now, don't let that concern you. The product is actually very stable.

Packages

Any Sublime user will tell you the first package they install is Sublime Package Control plugin. I think we all secretly hope that Sublime 3 will add this by default, but for now, you simply have to go to the installation page on their website and copy some incomprehensible Python and... Presto! You can now install any package easily from within Sublime.

text editor

Like Atom, Sublime has a lot of packages and themes! For me the essentials are:

  • SideBarEnhancements: without this, renaming/moving/duplicating files is not supported.
  • SublimeLinter: To add linters for different languages
  • GitGutter - Shows git status on the left side next to line numbers.

There's plenty more to choose from, too. Overall, Sublime's package support is very good, it's just a shame that you have to jump through that one hoop at the beginning to even get started with it.

Editing and Workflow

For me the use of projects is critical when working in Sublime - it helps me stay focussed on the relevant files for what I need. Being able to search for a file and across files is fast and easy. I've often had to perform searches across hundreds of files to find a snippet of code and Sublime's speed has never let me down.

As with Atom—the real power comes once you have some key plugins installed. Getting the right syntax highlighting, JSON formatters, linters, etc takes some time, but once they're installed and set up, they don't need to be touched again.

One downside I've found is there's no decent Git plugin that lets me do nice diffs and stage changes. I only really trust using SourceTree for that. I'm sure others will be able to correct me if there is a decent plugin that can help.

Customization

Again, Sublime is very much like Atom. The power to control aspects such as "save on lost focus", "trim whitespace" and more is available. The configuration files are simple JSON and there's a whole host of hidden settings waiting for you to play with.

Performance

Here's where Sublime outperforms Atom—opening, closing, searching, etc is very smooth and fast. The only issue I've ever faced with performance is from badly performing plugins—but even then you'll get a warning message when a plugin seems to be taking too long.

Verdict

As I mentioned at the start, I'm a long time Sublime user so my opinions here are likely to be slightly biased, but in general, Sublime is a flexible and fast editor. There's a reason it still makes the top 3 Development Environment in 2016.

Visual Studio Code

text editor

Visual Studio Code (VSCode) is a relative newcomer to the world of text editors. It was only released last year (April 2015), but it has already been picking up a lot of traction. Microsoft has done a great job of creating a powerful and flexible cross-platform editor that's piquing a lot of interest from developers.

Packages

As with our other editors, VSCode has a nice plugin (extensions) ecosystem. The extension management is built-in, and there's already several thousands available! As with Atom, some come installed by default.

You'll need to spend some time picking out plugins that are best for your workflow. One of my favorite (and what makes me excited about VSCode) is Debugger for Chrome. It allows you to set breakpoints and debug JS from within VSCode.

text editor

The same can also be done with Node.js—setting breakpoints in VSCode and stepping through while the node process runs in a terminal.

Editing and Workflow

Although VSCode is built in a similar fashion to Atom, using Electron, Node, and HTML/CSS, it is actually much faster without any real lags.

I spent a week using the editor, and in general, I was pretty content. It had a very familiar feel to Sublime and Atom. The debugging feature mentioned above was a treat. I also set up some of the IntelliSense typeahead completion which (although painful to configure initially) started to show its benefits in a day or so. I could already whizz through typing out a function name without having to remember the arguments (or their types for that matter).

As an added bonus, the Git integration is very convenient. Not as powerful as what I get using SourceTree, but for common operations like commits and diffs, it proved to be perfect and sped up my development time.

Customization

Like the previous two editors, the expected customization features are there—all the necessary wrapping, indenting, theming, language tweaks, etc.

Performance

As mentioned before, although VSCode (like Atom) is built on Node.js, Electron, HTML, and CSS, it definitely feels fast (unlike Atom). I didn't experience any lags when opening/changing files. Searching was also fast. I believe one of the differences between Atom and VSCode is that the UI Editor is built on Monaco (from Visual Studio Online), which might be the explanation for the performance difference. In any case, the performance is definitely on par with Sublime.

Verdict

Overall I was very impressed with VSCode, to the point that I've considered moving to it more permanently. I'm still yet to take that step to fully dive in, but I think it would be a nice holiday project to configure it to meet similar standards I am used to in Sublime. After that, I think I really could stick with it for longer. The Git integration and in-editor debugger are great features that I've struggled with in Sublime but worked almost immediately in VSCode.

Vim

text editor

  • Url: http://www.vim.org/
  • Cost: Free GPL compatible licence
  • Developer: Bram Moolenaar
  • Platforms: OSX, Windows, Linux

I feel like all developers should at some point go through a "rites of passage" and use Vi or Vim for a project. Ability to edit or view a file on a remote server through a terminal is a hugely productive and important task. I've seen many developers jump through all sorts of hoops using SFTP, or curl, and re-uploading files.

However, I also recognize that the sheer mention of Vim brings shivers to some, and even righteous indignation to others. Had I omitted it, I would fear a severe smackdown from the Vim power users 😉 In all honesty for those who have spent the time to master it, it is an incredibly productive environment!

Packages

At over 14,000 packages, Vim has one for everything! Tree explorers, syntax highlighters, theming, Git integration, etc. It's all there, in multiple versions. Vim is incredibly flexible and powerful. However as with all other editors mentioned above, knowing the best plugins to install requires some insider knowledge and recommendations.

Personally, I've found going off the most popular plugins on http://vimawesome.com/ as a starting point.

Editing and Workflow

Firstly, for those not familiar with Vim, it is essentially a command line text editor. Therefore it's not some app you double click and use a mouse to move around in. The control of opening, closing, editing, saving is all keyboard shortcuts.

text editor

When I was in college, we were forced to work only in Vi for an entire module. Once you're forced to do something like that, the common keyboard commands start to become second nature. If you really want to become a Vim user, it takes real commitment, but I promise you will feel like an absolute genius by the end of it!

In all honesty, the reason I find working in Vim less efficient is because I don't know enough of the keyboard shortcuts. I can edit single files, searching, replacing, etc. with ease, but when working across multiple files, I start to lose track. So for me, Vim is a little too much.

Customization

Vim is amazingly customizable. If you Google search for .vimrc you'll find a lot of examples of preconfigured Vim configuration files. In short, anything is pretty much possible in Vim.

Performance

The only blocker to performance in Vim is the user... in other words you! It's as raw and as fast as it could be, but the performance is how quickly you can type your commands and move around! If you're a Vim power user it is blazingly fast!

Verdict

Vim is as raw of an editor as you can get. It can be an incredibly fast, efficient development environment if you can have the patience to learn the commands. There's a great online game http://vim-adventures.com/ which helps to teach the basic commands, like moving around files using h, j, k and l keys.

Final Verdict

All of the above editors have their pros and cons. Personally, I'd say that in your developer's career, you should give each one of them a shot for at least a week to see for yourself what works and what does not work for you. I hope that summarizing those four most popular text editors will make for a good starting point when considering making an editor change.

What did we miss out? And what's your favorite editor? Let us know in the comments below.

Other tutorials you might be interested in

Discover and read more posts from Matt Goldspink
get started
Enjoy this post?

Leave a like and comment for Matt

40
74
74Replies
Tummy Jimmy
20 hours ago

I really really wanna keep using VS Code, but there are 3 deal-breakers; features missing that are available in Sublime. I haven’t found a solution/plugin for VSCode, but perhaps someone else knows…

1, “Goto Anything”.
Sublime: Hit Ctrl+P and start typing, and a lightning-fast list of everything in your project (text, filenames, paths) is presented (with fuzzy-searching, to boot!) THIS IS SO GOOD!!!
VSCode: Try finding an NPM module or some resource in a VSCode project, and you’d better know exactly what you’re looking for, where to start looking, and then be prepared to spend time moving to the parent directory from wherever you happen to be last. Blerk.

2. "MiniMap"
Sublime: See a mini-representation of your whole document all the time, and click to jump to a specific location.
VSCode: Scroll up. Scroll down. Scroll up. Scroll down. Rinse, repeat…

3. "New View Into File"
Sublime: See the same document in multiple tabs without having to split the view and waste screen space. For instance, a “Vue.js” template typically has 3 sections: HTML, JS & CSS. With longer documents, I can have the same doc open 3 times in different tabs, ready to edit each section so I don’t have to keep whizzing up and down (or even clicking up & down on the minimap.)
VSCode: Wanna add some CSS? Scroll down…down. Wanna add that new class to an element? Scroll up, up, up, up… Wanna change a color? Scroll down, down, down, whoops, missed it!.. up a bit, up a bit… too far… down a bit… YAWN.

If these three things could be done in VSCode, it would be perfect (IMNSHO :-)

Matt Goldspink
18 hours ago

I can’t comment for all these features but certainly for the first they exist as I use them both:

  1. on my Mac in VS Code I type “Cmd+p” and it behaves identically to Sublime - I always use this for opening files and never have to click around. I’m sure the Windows version of VS Code must have the same feature - see https://code.visualstudio.com/docs/editor/editingevolved#_quick-file-navigation

  2. VS Code has had minimap for a while now, just add the following to your user preferences:

// Controls if the minimap is shown
"editor.minimap.enabled": true,

// Controls whether the minimap slider is automatically hidden.
“editor.minimap.showSlider”: “mouseover”,

// Render the actual characters on a line (as opposed to color blocks)
“editor.minimap.renderCharacters”: true,

// Limit the width of the minimap to render at most a certain number of columns
"editor.minimap.maxColumn": 120,

  1. I’m not sure about this - I can see for a Vue.js project this woud be annoying. There are so many settings/hooks in VS Code now it may exist, but be well hidden. I’d recommend posting on StackOverflow or their Github project to see if it exists.
Tummy Jimmy
5 minutes ago

Hey, that was a bit of a rant I wrote wasn’t it! Didn’t mean to sound all shouty, and I forgot to thank you for your article, so I’ll do it now. Thanks!

Thanks for the reply too…

  1. Ctrl+P I can not for the life of me get working in VSCode as it does in Sublime!! It simply refuses to search the “node_modules” folder, though I’ve checked it’s not excluded in prefs or anywhere else I know about. But I guess this is probably some “user error”… (it usually is ;-) I’ll keep trying.

  2. VSCode has MiniMap? Well, don’t I feel silly now :-) Might not need…

  3. Great minds think alike, and that being true I’ve already tried Stack Overflow: https://stackoverflow.com/questions/43584122/vs-code-multiple-views-of-same-file-without-splitting) But no answers since April, so maybe this is a good opportunity to code my own plugin and big-up myself in the hip-hop and happenin’ Vue community lol.

If I can just solve #1, then taking into account its speed, debugger & git integration then I think VSCode is now back in the lead.

Thanks again!

Sean Ryan
6 days ago

Hi Matt, thanks for the objective look at some of the most favoured editors out there at the moment.

You have covered Vim, my personal editor of choice, but complain about the learning curve for newbies. Have you come across gVim? Its a full user interface wrapper for Vim!

This is great for those starting out, as it also shows the vim commands and kb shortcuts in the context menu. You learn through using it then.

Also, emacs exists, and has gui wrappers for all the operating systems too.

Matt Goldspink
6 days ago

Thanks Sean - I’ve heard of gVim but never tried it. In all honesty I would love to be a vim user. I’m always in awe of people who can live their lives in a command line like that, using Mutt for email and never touching a mouse. It’s a life goal I’d love to achieve, so maybe gVim is the way to get there!

Chase Anderson
2 days ago

Heh, here’s the Vim purist. The thing to me about vim is it is a lot more work to configure out of the box, and if you’d like to utilize the powerful text editing of vi you can easily flip that on in any of the editors mentioned in this blog. Sublime for example you simply un-ignore the vintage package in your settings. And it allows you to take advantage of some of sublimes fantastic features as well. So you can then be using ctrl+r to switch functions in a file, ctrl+p to switch files, ctrl+alt+p to switch projects, and much more.

In the end you can make all the editors do the same thing, and admittedly vim works in console; however, I’d say vim is a lot more work to do the same thing you can do in other editors.

Shaun Taylor
7 days ago

All well and good, but you have an article title that starts with ‘Best Text Editor?’ I read through it all and your final verdict is - try them for yourself, see which you think is the best! This article does not identify the “best text editor” its nearly a summary of each one, information I can easily get from visiting the site for each editor!!

Sean Ryan
6 days ago

I think the moral endpoint of this article fits. The best text editor isn’t the one that someone tells you to use, it’s the one that enables you to be more productive.

Personally, in my case I am a linux user with years of terminal usage under the belt. It takes me three seconds to create a file, open it in vim and get started.

For others, you may be able to click file->open and select a file in three seconds.

The best anything is the one you can utilise to its’ fullest and makes you most productive.

And forget the elitism, just do you! I think this article is more helpful than the opinionated Vim / Emacs / Sublime shite out there.

Matt Goldspink
6 days ago

Thanks Shaun and Sean for the feedback.

Shaun - I can give my answer which is the best is Visual Studio Code. However I’m sure the person here would completely disagree:

http://cc.bingj.com/cache.aspx?d=1462716999241&mkt=de-DE&setlang=en-US&w=xEsMxqoa0KJSwMsTh3p_8w2qryykfDvB

So as Sean says it’s always going to be a personal opinion depending on your needs and preferences.

So I guess I should apologise for the clickbait title… Sorry!

Show more replies

Get curated posts in your inbox

Learn programming by reading more posts like this