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.
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).
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).
apm install package-name. The best part is its integration with Github, you can learn about that on their website.
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.
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!
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.
You have probably heard of Notepad++, and if you haven't, it's simply a text editor with cool features like a WYSIWYG1 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.
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.
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.
It's time for some IDEs
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
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.
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:
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.
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).
*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:
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).
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.
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.
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.
WYSIWYG - What You See Is What You Get ↩