Probably the most important tool for any developer is the code editor. This is where you spend the vast majority of your development time so you want an editor that has the functionality you need, and that feels right for you. Often it’s about the right balance of features, simplicity, and speed, which is why many prefer simpler yet still powerful editors to full blown but relatively slower Integrated Development Environments.
Linux is actually a great platform for developers and programmers of all stripes, and there are many code editors to choose from. This is a selection of 20 code editors, all free, and all easily obtainable either directly from your Linux repositories or as direct downloads from an official site. Some are old but great worthy considerations, and others are brand new and featuring some new approaches and slick new interfaces. We’ll get to the newer ones near the end before finishing off with a couple of iconic ones.
The focus is mainly on editors rather than complete IDE’s, but there are a few that may belong somewhere in between or claim to be IDEs. Doesn’t matter so long as they’re simple enough for use as editors, and fast enough. All of them allow you to get started quickly by opening up a code file and start working, or playing around. So check them out, play with them, and take your pick.
Named the best programming editor for Linux by LifeHacker in 2012, Kate actually comes standard with any KDE based installation, and is otherwise available from your distribution’s repository making it very easy to try out.
Kate is powerful and beautiful, featuring everything you might expect from a slick modern code editor, like syntax highlighting with bracket matching, code folding, spell checking, auto completion, powerful search and replace, bookmarks, and sessions. You can extend its functionality even further with plugins and scripts.
It integrates well with KDE, and can connect to remote locations you’ve got set up very easily, as shown in ourprevious article. If you’re in a non-KDE environment like GNOME, Xfce, or Unity, it will work just fine, and you can still obtain the integration goodness by just installing Konqueror or Dolphin.
While we’re at defaults, GNOME and Unity users will generally have Gedit already pre-installed and ready to use. As unassuming as it may appear it is a decent code editor for simpler tasks, with syntax highlighting, spell checking, themes, and plugins to extend functionality. Admittely it’s a bit more simplistic compared to Kate, which goes in line with GNOME’s general usability philosophy, and its role as the default text editor. As can be expected, it also integrates well with GNOME based environments.
Like Notepadd++ on Windows SciTE is based on the Scintilla editing component, in fact developed by the same author as that of Scintilla, initially to demonstrate Scintilla’s capabilities. As such it is fairly simplistic, but does have syntax highlighting and code folding, search and replace, sessions support, and bookmarking. You can also fine tune it by editing a configuration file available from the Options menu.
A very light and simple editor that gives you the basics like syntax highlighting and good search/replace (with frontends to grep and find) as well as vertical and horizontal split views and tabs that can be moved between them. It also features configurable tools that you can write and add yourself right within the preferences window using Lua, Shell or Python scripting. Plugins are supported as well.
Another pretty decent editor taglined as a developer’s text editor, Editra offers helpful coding features for over 60 programming languages including syntax highlighting, code folding, auto-completion, powerful search and replace, bookmarks, easy session management, generators for HTML, LaTeX, and RTF templates, and multiple syntax highlighting color themes that can be easily customizable. It also supports plugins, and many are easily available for download and install right from the preferences dialog.
Geany was developed to be a lightweight Integrated Desktop Environment that’s small, and fast as well as having as few dependencies as possible, including independence on any given desktop environment like KDE or GNOME. As a result it’s as fast as you might expect a simpler code editor to be yet containing features you’d see in IDEs including a built in terminal, compiler, scribble board, color picker, code templates, plugins, and a bunch more. It could be an excellent choice if you’re looking for that kind of middle ground.
Another one that could be a good middle-ground choice between an editor and an IDE is Bluefish, particularly for web developers and programmers. It is fast and lightweight yet has many helpful features such as code snippets some of which are modifiable through a graphical dialog before inserting, quickbar with commonly used tags, integration with external tools and commands, zencoding support, code folding, auto-completion, advanced search and replace, and so on.
This one is a fast, minimalist editor written in Lua and apparently aimed at programmers who like to customize their experience, and work without much hand holding. You can write extensions to it using Lua code, cutomize included themes, have as many vertical and horizontal split views as you like, and operate it entirely with a keyboard. Textadept also offers auto-completion for programming symbols and words, supports snippets, bookmarks, and has built in compile and build tools.
Apparent from the moment you launch it, TEA is a code editor with a bit of a character of its own. Its built in manual introduces it as “a text editor of the atomic era”. “An alcohol can make you temporary happy without a reason. TEA does not!”, it says. “TEA gives you a reason. A meaning of the life.”
Besides the manual side tabs bring you to the built in interface for opening files, and all the TEA settings, as well as.. a calendar. TEA supports snippets, bookmarks, in-text markers, scripts, plugins, hotkey customization, some HTML tools as well as some interesting features like drag and drop support for text and images, an image viewer, image converter and resizer, ZIP archiver and unarchiver, RMS calculator, and a morse code converter.
That’s a fairly colorful list of features, but you just might find the taste of TEA to your liking.
jEdit is an old “programmer’s text editor” written in Java and enjoying a sizeable following. It’s not all that much to look at, but feature wise it’s got everything you’ll probably need. Some notable features include unlimited undo/redo, “kill ring” that remembers previously deleted text, multiple text selection, rectangular selection, copy-paste from unlimited clipboards, and so on.
An IDE suitable for C, C++, and Fortran programming. It is highly extensible, easily configurable, and contains all the features you’ll probably expect. This includes a fast custom build system, parallel builds, ability to combine projects through workspaces, importing MSVC and Dev-C++ projects, a GNU GDB debugger, code folding, code completion, class browser, smart indent, external customizable tools, todo lists and so on.
12. Komodo Edit
One of the more popular options, Komodo Edit by ActiveState is a powerful fully featured and decent looking code editor. It is basically a light version of the Komodo IDE, which isn’t free. If you do get hooked on it and ever feel a need to upgrade to a full scale IDE it is nice to have one on offer that will fit the style you’re used to.
Notable features of Komodo Edit include its excellent auto-completion with calltips happening as you type, support for multiple selections, mini map, and smart snippets, and code refactoring. It also supports projects, and can be further extended with a number of available add-ons.
13. Aptana Studio
Also an IDE, in fact claiming to be the most powerful open source IDE, Aptana Studio is another fairly popular option. As IDE’s such as this go the biggest complaint for those who want simple code editing is performance as the kitchen sink has its costs, but Aptana Studio 3 made significant progress in that regard. Core features advertised are code assists, integrated debugger, git integration, deployment wizard, a built in terminal, and the ability to fully customize the development environment.
KineticWing is a very interesting IDE for web developers which feels and performs more like a simple code editor. This may make it a great candidate for that middle ground option we mentioned before. Besides its speed and simplicity the first thing to notice when opening a CSS file in it, for example, is how it lists all of the selectors in the right sidebar and allows clicking on one to jump straight to it. This can be extremely helpful, along with the toolbar on top with tools like Minify and Format.
KineticWing also features code folding, bookmarks, workspaces, projects, and support for zencoding, less, coffeescript, and js beautify. It’s a pretty compelling option to consider for web developers, but it is still in beta.
15. Sublime Text
Sublime Text is a kind of superstar among code editors with its slick UI, simplicity, speed, and what feels like just the right mix of features and the way they’re presented. Notable features include multiple selection and editing, Goto Anything for easy opening of project files or pieces of files, powerful search and replace that works with multiple selections, a command pallette for quick access to various other features, and so on. It is also extensible with packages.
As such Sublime Text manages to offer a whole lot of power and flexibility in one fast, slick, and simple package. Sublime Text is not free nor open source, but with its never expiring fully featured trial it can be used for as long as you want to before paying to remove the “UNREGISTERED” mark on the title bar, and the occasional message nagging you to buy.
16. Light Table
As one of the top 10 highest technology projects on Kickstarter, Light Table brings a lot of innovation to the table, and offers a different approach to the way we program. Some see it as a Sublime Text killer because it is open source and Sublime Text isn’t, while it reminds a bit of Sublime in some respects. However, Atom is much closer of an alternative to Sublime, and Light Table goes quite a bit further.
Probably the most notable thing about Light Table is its ability to show what’s happening with your code and how it runs in real time. You can watch values, evaluate code pieces, and see results of your code in real time. Tabsets, which are basically split views with multiple tabs in each, allow you to see different pieces of the project, or the results of your project at the same time.
Light Table also offers a command palette, plugins, support for workspaces of files and folders, built in console, and so on. But truth be told, it does come with a bit of a learning curve if you want to take advantage of what makes Light Table special.
Atom is another relatively new code editor built completely on web technologies, so it is kind of like a web page for editing web pages which is simultaneously a web browser itself. This is best demonstrated when you open the developer tools like the same ones you can see in Chrome or Firefox, and begin inspecting elements of Atom itself as HTML.
Atom is meant to be very configurable and hackable. The standard package is just a default set of packages meant to allow you to get coding with all the features you come to expect from a good code editor, but it is just a starting point you can customize into something different by editing configuration, adding packages, themes, and so on.
Atom reminds a lot of Sublime with its overall feel, and things like the command pallette, packages, ability to find and jump to anything, and so on. That said, it’s obviously going its own way, with its web tech building blocks and hackability, but the web tech it’s written in also makes it a little more sluggish compared to Sublime. It’s a bit of a trade off.
Adobe’s Brackets is specifically designed for web designers and front end web developers. Its most striking feature is live HTML development, that is, seeing results of your CSS and HTML changes as you type. You just need to connect the editor to the web location. Another one is inline editing of external files linked to the currently edited document so you don’t have to open or switch to the external file to edit a relevant piece of code. Brackets is also extensible with various extensions that add further functionality.
Sometimes jokingly called an operating system all of its own rather than a mere editor, due to a tremendous amount of things that could actually be done in it, and also frequently mentioned by its author Richard Stallman when he jokes about The Church of Emacs (with him as Saint iGNUtious) Emacs is certainly an editor with history and power.
It is not for everyone though, as it has its own specific way of functioning and a pretty steep learning curve. Diehard fans will argue, though, that once you do learn it you’ll never look back. It is also extremely customizable as you can apparently set it up just the way you want it.
If you’re interested in something unique, traditional, iconic, but very powerful under the hood give this a try. If you’re already a fan, then consider this an honorary mention.
Similar things could be said about Vim except for the quasi-religious jokes. Needless to say it represents the other one in the endless Editor wars that have (and still are?) being fought between Emacs and Vi. It’s got its own ways though, and a learning curve arguably only a little better than that of emacs. It’s also customizable, but it is less of a kitchen sink and more focused on enabling productive editing and programming.
Like Emacs, it’s something you have to try to understand, and given its availability anywhere there’s Linux (and UNIX) it wont be hard to get a hold of. You probably already have it. You can check out our vi survival guide to help you get to know it!