State of Text Editors (2015)
If I had to fashion a guess, I would say learning to write code is going to be a popular New Year's Resolution. If you are a programmer (or looking to become one) then you should understand that the most important tool in your life should be your text editor. It's the paint-brush, the hammer, the scalpel or the grenade depending on the task, and taking full advantage of it's features will remove a lot of obstacles from your path and allow you to focus on coding. So to assist anyone looking to write code (or anything else) in 2015, I've used a different editor a day for most of December and put together this guide just for you.
First, You may be wondering, what makes a good editor? Well if I had to come up with a top 10:
- Syntax Highlighting
- Powerful Find & Replace
- Extensibility
- Advanced Selection (vertical, multi-line)
- Tab Completion
- Version Control Support
- Split Pane
- Text Formatting
- Bracket Matching / Code Folding
- Documentation Integration (e.g. MDN lookup)
So if you're trying to write code in TextEdit or NotePad you've probably realized that it has just about none of these features. When it comes to editors there are a plethora of options out there that basically come in three flavors: standard, command line, and IDE. I will rank editors in each category, so whether you're a beginner or seasoned hacker looking to switch this should come in handy.
Command Line Editors
I know most of you are thinking, "woah I'd better skip this command line section that shit looks like the Matrix". I understand your trepidation. However I strongly believe (and most serious programmers probably agree) that if you want to get the most out of your development process, you have to understand how to use the command line, especially its editors. Face it, whether you use a GUI or the command line you're going to have to learn a lot of shortcuts (or be very slow at what you do). So you may as well dive into the deep end in my opinion.
Side Note: If you plan on developing web apps one day you are going to have to SSH into a server and change some files, and when you do your GUI text editor will not be there to save you
Emacs Workspace with HackerNews and a shell running in split panes
1. Emacs
My personal favorite editor is Emacs. It has an amazing collection of packages available via MELPA and Marmalade and has key bindings that I don't hate. That being said there is a substantial learning curve to emacs, and it will likely take weeks before you're truly comfortable. However, once you learn emacs, you have possibly one of the most powerful computer programs in the world at your disposal, pardon me for being so hyperbolic.
Price: Free
Strengths: Maximum Extensibility, Open Source, Cross-Platform, Package Managers (MELPA, Marmalade)
Weaknesses: Steep Learning Curve
Best Suits: A Seasoned Hacker
2. Vim
There are some really hardcore Web 1.0 vets out there who upon learning that you don't use vim to program will immediately exit the conversation. I think those people are just as stupid as vim keybindings, not for using it but for being so smug. I'm not saying there are no advantages to vim (actually vi, on top of which vim is built): it's already installed on almost all machines and it has a lot of the same powerful features that emacs has. However, it can be verbose with an even steeper learning curve than emacs, not to mention the fact that it is less extensible (no equivalent to emacs package managers).
Price: Free
Strengths: Comes Pre-Installed, Cross-Platform, Open Source
Weaknesses: Steep Learning Curve, Not Easily Extensible
Best Suits: A Seasoned Hacker
Standard Text Editors
Let's be real though, most of you are actually interested in these, and for good reason. The text editor space is a crowded one but there are a few that have set themselves apart. While I rank these editors based on my overall opinion it should be noted that some are better at certain tasks than others (e.g. for editing Markdown I always use Atom, when I'm using a new language I like Sublime for its better tab completion). So while you may have a main squeeze in one editor, you should probably have a few other boos on the side.
1. TextMate
TextMate has just about all of the features that you would want to see in your everyday text editor. It also has a very active community of bundles developers. It leaves a bit to be desired, but is a strong editor. The beta version of TextMate 2 is being developed open source and is available right now for free, but will eventually cost.
Price: Free - €39
Strengths: Vertical/Multiple Selection, VCS Integration, Auto-Formatting, Documentation Integration, Robust Plugin Community, Open Source
Weaknesses: No Split-Pane support, OS X Only, Auto-Complete is not great (and has an odd key-binding <esc>
)
Best Suits: Professional Web Developers Seeking Maximum Extensibility
2. Sublime Text
Sublime Text is very similar to TextMate, with a less active contributor base for plugins and a vastly improved autocomplete feature which can save a lot of time. Honesty, on the strength of this feature alone I strongly recommend this editor. At such a high price I assume most people will lean towards TextMate.
Price: $70
Strengths: Vertical/Multiple Selection, Split Panes, Auto-Completion, Cross-Platform
Weaknesses: Less Robust Plugin Community, No Builtin VCS Support
Best Suits: Professional Web Developers looking to save time or beginner who could use good autocompletion hints.
3. Brackets
Brackets plugins environment is great to be so young. It will soon be integrated with Creative Cloud which will probably be a very meaningful improvement. It is also the only editor that offers Extract which gives you code hints from PSDs. Subsequently, I'm very high on this browser's future.
Price: Free (for now)
Strengths: PSD extraction, (Inevitable) Creative Cloud integration, Robust extensions (Grunt, Git, Jshint), Open Source
Weaknesses: Immature, OS X Only
Best Suits: Designers/Engineers needing PSD-Code conversion
4. Atom
Open Source "Hackable" Editor made by Github. Better still, it appears that Atom wants to take advantage of the active community of TextMate bundles by making it easy to convert. With obviously strong Github integration and a solid base of introductory features, Atom could quickly make up ground on other editors.
Price: Free
Strengths: VCS Integration, Markdown Editing/Previewing, Open Source
Weaknesses: Immature
Best Suits: Coders looking to experiment or new to Git
5. BBEdit/TextWrangler
TextWrangler is a lightweight version of BBEdit,which has been around for over 20 years. If you are looking something a lot less modern (and only a hair better than TextEdit or Notepad) this may be for you.
Price: $49 (BBEdit) Free (TextWrangler)
Strengths: Mature, Scriptable, Simple
Weaknesses: Very Feature Light
Best Suits: Someone Looking for the Simplest Possible Improvement on Status Quo
Integrated Development Environment
If you've ever built an app you probably know that writing code is about more than just writing: What you really need is an environment to develop in. This environment should watch for changes and compile code, install and manage dependencies, and the many other tasks that are necessary for your application to work. If you haven't noticed from earlier sections my preferred dev environment is linux, with some emacs, tmux and grunt. IDEs typically package together a text editor, automation tools, debugger and more to make programming easy. I am not very fond of IDEs only because they tend to be rigid. In addition, its usually not the case that an IDE can excel in every function that it does. Therefore, if your needs outgrow the IDE capability in a particular aspect of development and you have to integrate an additional tool you just nullified the entire benefits of using an IDE.
1. WebStorm IDE
Calling itself a "javascript IDE", WebStorm is incredible for debugging javascript code (i.e. adding breakpoint directly from the editor).
2. Dreamweaver
Old School but still powerful WYSIWYG editor from Adobe. This was the first editor I ever used but I am very glad that I outgrew it.
3. Eclipse IDE
The "OG" of dev environments, Eclipse is mandatory for Java development, but can be used for any code. It has plenty of functionality, but is not one of the user unfriendliest IDEs out there. I apologize for the bias, but I won't get as detailed in my description of these applications.
4. Coda
Normally I would include Coda in the "standard" section, but unlike the other editors there Coda seems focus on features more common to IDES (live preview and uploading/publishing, MySQL Editor). Unfortunately I believe that these features comes at the cost of it failing to provide the same basic code editing features of many of other editors I prefer on this list.
5. Google Web Designer
WYSIWYG editor from Google... Not for professional development
Conclusion
I just hope that this helps someone out there. If you are looking to further improve your development process be sure to check out my pet project (and personal dotfile repo) dock. Happy Coding!
Written By: Cameron Drake