Choosing the right editor

Published in 02-08-2016 by Luis Lopez

This article is for those who are either new to this programming world or want to know more about text editors and IDEs in general, I’m going to list the ones I know as of today August 1st of 2016; categorised as either IDE, text editor or command line editor, you might also be wanting to switch from your well-known editor to others, explore what they have to offer and how you can use them to improve your coding workflow.

Click here to jump directly to the list and skip the introduction.

IDEs are important when dealing with big projects and codebases (or if your job uses them) and also if you’re a true beginner who has almost no knowledge, they might come intimidating albeit helpful once you get to know them well. If you’re a person who codes in Java or any other statically typed language, you will agree than programming with an IDE is much more comfortable and makes more sense; it’s ok to be hardcore and do quick edits on Vim (a command line tool) or Sublime Text but that’s only when you know what you’re doing and don’t fear to use the command line compiler instead of the integrated debugging tools a big software like Visual Studio or IntelliJ may provide you with.

How to classify them

There are several types of text editors, from formatted or rich text editors like Word, Wordpad, Notepad (for unformatted text with various encoding systems), Scratch, Pages, Markdown specialised editors, and some other document editors to software that you can use to code in different programming languages, software that gives you syntax highlighting, auto-completion, snippets, indentation, packages to extend functionality, themes, and color schemes among other tools.

Would you be able to program in Notepad or MS Word? Yes… you could but I wouldn’t recommend it because you’d have to save them as text without format (or plain text) with the correct extension (if you’re on PHP, .php, if you’re on JavaScript, .js, and so on), but, notepad and the other editors don’t provide you with the right tools to do software development.

What you need instead is a code editor or an IDE, what are those? Simple, a code editor is a piece of software that you can use to write your code and it will behave like the tool you need to develop software, for example, coloring keywords that are syntax specific using the current color scheme (more on that later), display the line numbers (that’s important for debugging), allow for multiple text manipulation and add a file explorer (or project explorer) to select the files you need to work on. Most code editors today can be functionally extended with packages or plugins, there are millions of them, you can install one to let you know of errors you make during your programming sessions (linting), change the theme and color of the editor, add stylised comment blocks, implement a color picker or whatever you can think of (if it’s been invented).

In the other hand, an IDE or Integrated Development Environment is a complete software for development that is used by teams or people who need more than just the coding editor, especially if you’re coding in a compiled language (Java, C++, C#, Go) rather than an interpreted one (Python, Ruby, JavaScript) because these tools give you a complex debugger and an integrated compiler that you don’t need to manually type in the command line (for example, you don’t need to use the csc /out:program.exe *.cs command to compile your C# projects, all you have to do is click a button). IDEs give you also intelligent suggestions and are capable of inserting classes out of the blue with a click, they’re very powerful tools indeed; I could run out of words to describe how powerful and useful they are. I’m not saying you can’t do Java or C# development on a simple code editor like Sublime Text or a powerful editing tool like Vim, but you will have to be comfortable with the language for it to be safe of errors and do it in less time than with an IDE.

A list of amazing code editors

The first of the list is Sublime Text, when it was first launched it caused a big storm because of how lovely it was to edit text on it, the incredible amount of keyboard shortcuts and packages it had, I think it was the first time ever I saw the now ubiquitous Monokai color scheme and I was dumbfounded with how fast it opened and how well it managed large files (not a surprise, it runs on Python).

Sublime Text

Platforms: Mac, Linux, Windows | Pricing: Free (Begware, costs $70) | Download here | Buy Here | Install the package manager

Next one we have my favorite so far, Atom by Github, this editor is beautiful and since it was made in JavaScript with Electron, you can modify its stylesheet, its codebase and the plugin (they’re also called packages) creation is beyond easy. It’s also open source, you can check the project at their Github page. This editor comes with a Markdown Previewer already installed but doesn’t come with a minimap like Sublime does (install the package instead), the package installation process is less painful and you can also opt for doing it with the command line via apm install package-name. The best part is its integration with Github, you can learn about that on their website.

Atom

Platforms: Mac, Linux, Windows | Pricing: Free (Open Source) | Download here | Browse themes and packages

The next text editor was made by the Adobe people, it’s called Brackets and newcomers seem to love it because of two main features: live preview server with the click of a button (the lightning bolt icon on the sidebar menu) and Quick Edit, a tool that allows you to select a certain CSS class or ID and edit the code that applies it. It also has support for pre-processors but I keep saying this: I prefer using Gulp or Grunt for that.

Brackets

Platforms: Mac, Linux, Windows | Pricing: Free (Open Source) | Download here | Browse themes and packages

Relatively new, Visual Studio Code (created by Microsoft) has been positioning itself among the greats because of its integration with TypeScript and C#, the simplicity and its Github integration (like Atom). It has lesser extensions (packages) than Sublime or Atom but the ones that exist are more than enough for you to give this editor an opportunity. Forgot to mention that, oh surprise, it’s also Open Source!

VSCode

Platforms: Mac, Linux, Windows | Pricing: Free (Open Source) | Download here | Browse extensions

Textmate was a beautiful editor in like 2007 or 2008, it still is! I keep seeing Mac people have it on their computers and I see why, it has the features we know and love (although not everything) of Sublime Text and adds macro recording, clipboard history, works as an external sftp editor, integrated with X-Code and much more.

TextMate

Platforms: Mac OS X | Pricing: Unclear (You can download it but it can be purchased) | Download here | Purchase it here

You have probably heard of Notepad++, and if you haven’t, it’s simply a text editor with cool features like a WYSIWYG[1] for printing, customizable UI, macros, multi-view and others. More than that, it’s simple and fast, you can use it to start learning and then you can move on to a more powerful tool.

Notepad++

Platforms: Windows | Pricing: Free | Download here

Finally, it’s turn for a 100% paid Mac app, Coda by Panic which is not only a powerful code editor but also includes an FTP client that uploads new files “on save“, it has plugins and pixel perfect preview, they say it has SSH and CSS live editing. Since I don’t own a Mac, I can’t tell you firsthand but back when I was first learning web design, I came across some courses that used Coda in their videos and I was amazed by how well it performed. Not to mention they have an iOS app.

Coda

Platforms: Mac OS X | Pricing: $99 USD | Purchase it here | Browse plugins

Lastly but not least important we have Emacs, the most customizable editor right now and extremely beloved by many programmers, among its features you have integrated full documentation and a packaging system for extensions; not only it has the code editor but it also has a project manager, calendar, news reader and more.

Emacs

Platforms: Mac, Windows and Linux | Pricing: Free/Libre | Download it here | Take the tour

It’s time for some IDEs

I’ll start the short list with the trending set of IDEs that are rocking the development world right now. There’s a company called JetBrains that’s responsible of amazing pieces of software like: PyCharm (Python), Resharper (plugin for Visual Studio), IntelliJ (Java), PhpStorm (PHP), RubyMine (Ruby & Rails), WebStorm (Javascript & HTML), AppCode (iOS dev) and others. The official website has a better description of the features that I could possibly put in here, let the company’s website itself sell you on their products, don’t forget that if you have a student ID (and currently enrolled in college or university) you can apply for a free year license for each product! Here’s a screenshot of the big trio (PyCharm, Webstorm, and IntelliJ):

PyCharm Webstorm IntelliJ

Platforms: Mac, Windows, Linux | Pricing: $649 USD for all, $100-$400 separated (prices are per year and go down each year up to the 3rd one) | See the IDEs information and features

Visual Studio has been around for years, it’s extremely powerful (but heavy for some old computers) and regularly maintained by Microsoft. They have more than 3 tiers, the lowest are the Community version (free), Express and Professional (I believe there’s an Enterprise version). They already integrated with Xamarin which is a cross-platform mobile development environment; VS supports a lot of languages ranging from C, C++, C# and Java to Javascript, HTML, Python, and others.

VS

Platforms: Windows (can’t be used with Wine for Unix) | Pricing: Free (Community version) and up to $539 a year for the Professional version | Download here

We can not forget about Aptana Studio, it’s free, open source and has features that others don’t like a deployment wizard. It provides a built-in terminal, customizable UI and a wide range of languages to work with.

Aptana

Platforms: Mac, Windows, Linux | Pricing: Free | Download here

When we talk about Java, it’s common to hear the name of a certain IDE called Netbeans and this other one named Eclipse, which one is better? Fairly subjective. They are not limited to Java but it’s common to tie both concepts together. Here are the two:

Netbeans

This is Netbeans and according to their website: NetBeans IDE lets you quickly and easily develop Java desktop, mobile, and web applications, as well as HTML5 applications with HTML, JavaScript, and CSS. The IDE also provides a great set of tools for PHP and C/C++ developers. It is free, open source, and has a large community of users and developers around the world.

Eclipse

And this right here is Eclipse, let’s see what the site says: Eclipse is famous for our Java Integrated Development Environment (IDE), but our C/C++ IDE and PHP IDE are pretty cool too. You can easily combine language support and other features into any of our default packages, and the Eclipse Marketplace allows for virtually unlimited customization and extension.

Platforms: Mac, Windows, Linux | Pricing: Free | Download Netbeans or Eclipse IDE

Command line text editors

This is the second to last section, if you didn’t know, you can also edit text and code using the command line (or terminal, for the Mac and Linux people). You may be wondering why would anyone want to do that but trust me when I say that it’s imperative when you’re doing deployment, DevOps or editing files in a remote computer where you have SSH access (like connecting to your VPS cloud instance or a network resource, a Vagrant box or just your local machine).

There are three major editors and the first one is imperative that you learn how to use (not that hard, just memorize Ctrl+O to save and CTRL+X to exit) and its name is Nano. It comes by default in every Linux and Mac machine (to use it in Windows, install a terminal emulator or wait until Windows 10 adds native bash to it).

Nano in Spanish

*Cries in Spanish*, yep, sorry for that, but my system is in Spanish and that’s why my screenshot came out that way.

To quickly use it just navigate to any directory in your terminal window and type in the following command:

1
sudo nano myfile.extension

Of course, changing the extension to something you know and “myfile” to a different name, you’ll see how the window changes completely and you’re welcomed with a nice and clean UI to start typing some code. Some languages aren’t supported for syntax highlighting but that shouldn’t be a major problem. The sudo part is only required when there’s a permission issue when saving the file. To save the newly created file you can either press Ctrl/Cmd + O and then close the editor with Ctrl/Cmd + X or just close the editor and pressing the Y key to confirm (N to discard changes). If the file happens to exist, it will open it for further editing.

The other editor and said to be the most powerful one when it comes to raw text editing is VIM (that stands for VI Improved). I personally don’t know how to use it (yet) like the pros do but if you ever forget how to closet, type :q! and hit ENTER, that’s an internal joke by the way. VI is included with Linux and Mac, can be used with a Terminal Emulator on Windows and you may need to install the “improved” version separately).

VIM

The credit of the image goes to VimGifs

To run VIM all you have to do is vi filename.extension or sudo vi filename.extension (or vim instead of vi) like I mentioned before and why. Learning it can be strange at first but once you learn it well, you’ll be able to edit at Flash speeds. It’s also possible to run it outside of the command line with a graphical interface (GVim).

Extra: Mobile Editors

For iOS I recommend Codeanywhere (which is cross-platform), coding on the iPad or the iPhone can be a little bit uncomfortable but if you think you need it, go ahead and download it to your phone.

Codeanywhere

And lastly, for Android, there’s this amazing app called DroidEdit that’s simple but has anything you might expect from a mobile editor, including HTML browser preview. Let’s download it and try it, if you have a better choice, let me know.

DroidEdit

Conclusion

Don’t fall into the editor wars, you’re not a better programmer than the rest for using X or Y tool, what’s important is to (sorry for the cursing) get sh*t done. In the comment section, you can let me know of more useful code editing tools or IDEs because times change, new editors arise and old ones are forgotten (there is abandonware, believe it or not) or used by a minority who became in love with the tool.


  1. 1.WYSIWYG - What You See Is What You Get

Comments: