This post will cover some of my favourite text editors (TEs) and integrated development environments (IDEs). It is not meant to be a comprehensive overview of text editors and IDEs and rather just goes over some of my favourite ones. All of them are available free of monetary charge and all but one of them is also open-source. They are also all cross-platform and capable of running on Linux, OS X and Windows, although provided they can run on my favourite Linux distributions I do not really care about their ability to run on other platforms. These TEs and IDEs are:

For each TE/IDE I will mention their merits with respect to:

  • General text editing — how wide a range of markup/programming/style sheet languages does this editor support, in terms of syntax highlighting, auto-indentation, auto-completion, etc.? How many general-purpose features does this editor have? For example, does it have an embedded terminal?
  • Blog writing — how comprehensive is this editor’s support for markup/style sheet/web programming languages? Does it have the in-built ability to run SSG servers and deploy a SSG-powered site? Can it do grammar/spell-checking or markup language previews? Does it have an embedded web browser for previewing the changes to your site you have made in it?
  • Programming / Software development — how many IDE features does this editor have? Like the ability to manage version control systems, project-building/script-running tasks, debug code, diagnose program problems, etc.
  • Package development — how many tools exist specifically for helping Linux package developers.

I will also provide a section providing numerical ratings (out of 10; 1 being the worst/non-existent and 10 being perfect) as to the following characteristics of the editor in question:

  • Availability (AV): how easy is it to obtain this text editor on most Linux distributions? If it is in the official software repositories of most popular Linux distributions and can be easily installed from them it will earn a 10 here. If it is only available to those that are willing to compile its source code manually themselves and go through the whole troubleshooting process associated with this when something goes wrong, it will likely earn a 1-3.
  • Beginner-Friendliness (BF): how easy is it to use this text editor efficiently? How much of a learning curve does this editor have? Is the level of effort and commitment you need to put into learning how to use this editor similar to that you would spend getting a bachelor degree at university?
  • Customizability (CMB): how easily and extensively can this editor be customized and extended in its capabilities?
  • Features (FT): how extensive is its existing feature set?
  • Stability & System Resource Usage (SSRU): this is a composite of how long it takes for this editor to start up, how much CPU/RAM it uses once running, how stable it is once running and how great the program’s installed size is. The more CPU/RAM it uses, the larger its installed size and the more buggy it is the lower the rating.
  • Overall (OA): how impressed or satisfied am I with this editor?

Atom

The Atom text editor (v1.7.2) opened to this very blog post, with an embedded terminal (provided by the `terminal-plus` package) shown

The Atom text editor (v1.7.2) opened to this very blog post, with an embedded terminal (provided by the terminal-plus package) shown

Atom is a free, MIT-licensed text editor that is built using web technologies and developed by GitHub. It started out as a side project of Chris Wanstrath, one of GitHub’s founders, in mid 2008. It is built using the Electron framework (previously called Atom Shell) for buildng cross-platform desktop applications using web technologies. It is extensively customizable, yet also simple enough, for someone that has never used a text editor in their life, to pick up in no time without help. Despite this it is a large application with its binaries being >50 MB and taking up >200 MB hard drive space when installed, additionally its boot times are fairly long and it is only in the official repositories of two Linux distributions that I am aware of, namely, Gentoo Linux and Sabayon Linux. Further details about it can be found in the Running Atom on Linux post.

The Electron framework that Atom is built on, includes Chromium (the open-source project from which Google Chrome gets most of its source code) in its source code. Electron is also based on and utilizes the Node.js JavaScript runtime engine. Electron is open-source and licensed under the MIT License. Electron apps, under Linux, use the GTK+ 2 toolkit. This framework essentially allows developers to create cross-platform desktop applications using web technologies.

Like many other advanced text editors (such as Sublime Text and Visual Studio Code) it has a command pallette that is opened by the keyboard shortcut Ctrl+Shift+P. It also has the ability to use tabs and panes for working on more than one file at a time.

Installation

Details on installing Atom on Linux can be found in the Installing Atom section of the Running Atom on Linux post. Most notably I have developed a GitHub repository of installer scripts for Atom on Linux, to use them (assuming cURL is installed):

user $  /bin/bash -c "$(curl -sL https://git.io/vwEIX)"

while if you do not have cURL installed but you do have wget installed run:

user $  /bin/bash -c "$(wget -cqO- https://git.io/vwEIX)"

Customization

In my opinion Atom’s main advantages over other text editors are that despite being simple enough for a primary school (or elementary school as it is referred to in some countries) student to use it, it can be customized to one’s heart’s content. This customization can be done via the following methods:

  • Editing one’s own configuration files — these are files found in one’s ~/.atom folder and include (if these files are missing for you personally, you can create them): config.cson (the main configuration file), keymap.cson (the keymap configuration file), init.coffee (the init script file) and styles.less (the custom stylesheet). My personal configuration files are found in this GitHub repository.
  • Changing Atom themes to one already available in the Atom theme repository. This will change how Atom looks, but it will not add any extra functionalities to Atom (as extra functionalities are provided by packages not themes).
  • Installing an existing Atom package found in the Atom package repository. This should not change the aesthetics of Atom, but it will modify the behaviours and feature-set of Atom.
  • Writing one’s own Atom package — this can be used to modify (or add to) the behaviour of Atom or add new features to Atom. In order to do this you need to be well-versed in the CoffeeScript (CS) and JavaScript (JS) programming languages, unless you fork an existing package and merely make minor modifications to said package. You can share your packages publically in Atom’s own package registry. The best tutorial on writing Atom packages that I have seen can be found here.
  • Writing one’s own Atom theme — themes modify the aesthetics (or appearance) of Atom. In order to do this well it is best to have a good understanding of the CSS and Less stylesheet languages. I have created my own Atom theme (fusion-ui) by forking an existing Atom theme (accents-ui), so I understand this somewhat.
Atom 1.7.3 showing the Install menu in the Preferences Tab

Atom 1.7.3 showing the Install menu in the Preferences Tab

Installing Atom themes and packages can be done via the command-line with user $  apm install $PLUGIN where $PLUGIN is to be replaced with the name of the package or theme in question (case is important! No spaces are allowed), or it can be done from within Atom itself. To install a package/theme from within Atom open your Preferences Tab (which can be done by going to Edit→Preferences). Then, open the Install menu. Then depending on whether you want to install a theme or a package you will want to click the appropriate button (that is, either the Packages or Themes options) right of the search box. After you have clicked the appropriate button merely type in some words to describe the package/theme you want and press Enter to search for them. Once you have found a package/theme you want press the “Install” button shown here . After installing a new theme you will need to go to the Themes menu on the left-hand side of the Preferences Tab and select the theme you want from the UI or Syntax Theme drop-down menus.

The Themes menu of the Preferences Tab

The Themes menu of the Preferences Tab

Features and Merits

General

Atom’s general merits include:

  • In-built embedded file/directory browser called tree view and provided by the tree-view package.
  • In-built support for running git commands in Atom, using the git-plus package.
  • In-built syntax-highlighting, auto-indentation, auto-completion, snippets, etc. support for the majority of markup, programming and style sheet languages.

Additional general-purpose features that Atom can gain by the installation of extra packages include (in brackets are the package(s) that provide this feature):

  • Insertion of an embedded terminal emulator into Atom (terminal-plus).

  • Searching through past git commits in a repository (git-time-machine).

  • Suggesting improvements on existing code or markup in one’s opened files (provided by linter and atom-beautify)

  • Running hg commands in Atom, using the atom-hg package.

Blog Writing

For the purpose of blog writing Atom has the following helpful features:

  • It has in-built syntax-highlighting, previewing and snippeting support for GitHub-flavoured markdown (GFM). It also has in-built syntax-highlighting, auto-indentation and snippet support for HTML and, with the help of a plugin (atom-html-preview), it is also possible to preview HTML files in Atom. Syntax-highlighting, previewing and snippet support is also obtainable, using plugins, for asciidoc and textile.
  • It can apply language-specific syntax highlighting to pieces of code (belonging to separate, non-markdown languages like YAML for front-matter) within markdown documents. If you insert a code block (denoted by triple ticks (`) or tildes (~) at the start and end of the block, with the name of the computer language enclosed by the block after the first triple of ticks/tildes) Atom will highlight the code enclosed according to its respective computer language.
  • The in-built git support and embedded terminal mentioned earlier can be handy for those writing blogs hosted by GitHub and other sites using the git version control system. The embedded terminal can also be handy for those using static site generators (SSGs) that need to be re-generated manually before you make any git commits (e.g., Hexo).
  • One can also run certain SSGs from within Atom itself without using the embedded terminal, using plugins. For example, for Jekyll there is a plugin called jekyll that can be used to run the Jekyll server.
  • Keyboard shortcuts for bolding and italicizing text, inserting code blocks, etc. in markdown. This capability is provided by the markdown-writer package.
  • It has in-built spell-checking abilities (provided by the spell-check package)
  • You can also open a web browser embedded in Atom using the browser-plus package. I personally have limited experience with this package as it has a graphical bug that I have noticed on Arch Linux.

Personally I think it is the best text editor out there for writing a blog.

Programming

Atom has several optional plugins that can be used to turn Atom into an efficient IDE for a variety of different programming languages. These plugins include:

  • build — a plugin to automate the process of building projects in Atom. It has a support for most major compiled programming languages, for a list of such languages see here. Projects written in other compiled languages can likely be built via the use of other more language-specific packages, like builder-go for Go.
  • hydrogen — a plugin for running scripts using any installed Jupyter kernels you have available.
  • nuclide — a plugin developed by Facebook that adds features mentioned in greater detail here. These features include debugging, test running, problem diagnosing, difference viewing, etc. primarily for the Hack and PHP programming languages. It also includes in-built support for Mercurial versioning control. I personally would not recommend it as for me it makes Atom either incredibly laggy and prone to crashes.
  • platformio-ide — a plugin to turn Atom into a more efficient IDE for IoT. It includes, “intelligent code completions” for C/C++, along with debugging, building and version control features typical of most IDEs. It also makes Atom slower, but it does not slow it down quite as much as nuclide.
  • script — for package for executing files (or scripts) written in an interpreted language like JavaScript or Python.

Package Development

Atom also has a few packages that can make it an attractive editor for package developers and maintainers of certain Linux distributions. These distributions include:

  • Arch Linux / Manjaro Linux — for Arch developers I recommend the installation of the terminal-plus package only. The bundled language-shellscript package automatically provides syntax highlighting for PKGBUILDs upon opening, so you need not worry about installing extra packages to provide the necessary syntax highlighting of PKGBUILDs. The terminal-plus package would likely be helpful as it allows you update package checksums from the command-line (using the updpkgsums command) and if you are more comfortable with running git commands from the command-line like I am it also allows you to commit your changes to Arch source files (like PKGBUILDs, install files, patch files, etc.).
  • CentOS / Fedora / openSUSE / other RPM distributions — RPM developers are probably best using the language-rpm-spec package for syntax highlighting of RPM spec files.
  • Debian / Ubuntu / other distributions using Debian packages — Deb package developers may benefit from the language-debian package, as it provides grammars and snippets for Debian rules and control files. I have never used this package so I personally cannot comment on how helpful it really is.
  • Gentoo Linux / Sabayon Linux — Gentoo developers are probably best off installing the language-gentoo package as it allows them to more easily update ebuild manifests, provides syntax highlighting for ebuilds and allows one to test out ebuilds by building packages from them. Personally I think this is the best Atom package for package development out there, so Gentoo developers are certainly blessed when it comes to Atom.

Ratings

  • Availability: 7. Official binary releases exist for most popular 64-bit distributions. Unofficial repositories containing Atom exist for most other popular distributions (e.g., Atom can be installed from the Arch User Repository for Arch/Manjaro users). My installer should (hopefully) make this installation process easier.
  • Beginner-Friendliness: 9. Considering its feature-set it is very beginner-friendly.
  • Customizability: 9. Very customizable.
  • Features: 9.
  • Stability & System Resource Usage: 4. On Arch Linux Atom 1.7.3 had the installed size of 222.91 MiB, where Atom was built from a PKGBUILD in my GitHub repository. The amount of RAM it used while running in safe mode (where no packages or themes, beyond the in-built or bundled ones are loaded) was 276.5 MB for one window and one tab.
  • Overall: 9.

Brackets

The Brackets text editor (v1.6) running on Arch Linux opened to my [JScripts](https://github.com/fusion809/JScripts) GitHub repository

The Brackets text editor (v1.6) running on Arch Linux opened to my JScripts GitHub repository

The Brackets text editor is a free and open-source (MIT-licensed) text editor developed by Adobe and built using web technologies. Brackets is unlike most other editors compared in this post in that it is specifically designed for web development and is not intended for general-purpose programming or text editing like Atom, Komodo Edit or VSCode. Brackets is built using its own framework (Brackets Shell), much like Atom with its Electron framework and Komodo Edit with its Firefox backbone. Brackets also uses the GTK+ 2 toolkit on Linux.

Brackets is designed to be a lightweight editor, the biggest problem with it, in my opinion, is that it has difficulty handling large numbers of files (even when those files are all opened by the editor, but just present in the directory the editor is opened to) like that present in most git repositories. I have found that I cannot use it to edit The Hornery due to this very issue. Brackets is also known to be missing some features on Linux that it has while working on the more popular proprietary operating systems, OS X and Windows NT.

Installation

Brackets is more challenging than most other editors mentioned in this post to install on Linux distributions that do not use the APT/dpkg package managers, this is because on most distributions you either have to install Brackets from the Debian binaries provided by the Bracket’s GitHub repository (on non Debian-based distributions this can still be done via extracting these binaries and moving the files within to the appropriate locations on one’s system) or build Brackets from source code. You can find these Debian binaries provided by the Bracket’s GitHub repository on their releases page.

I have created a shell script installer for Brackets, that should work on most popular Linux distributions (see its README for details on which distributions are supported). To use it, run (assuming cURL is installed):

user $  /bin/bash -c "$(curl -sL https://git.io/vrYlf)"

or, if cURL is not installed but wget is, run:

user $  /bin/bash -c "$(wget -cqO- https://git.io/vrYlf)"

Customization

Brackets Plugin Dialog

Brackets Plugin Dialog

Customizing Brackets is done via plugins, to install a new plugin open the plugin dialog as shown in the screenshot above.

Ratings

  • Availability: 6. My installer should make its installation easier.
  • Beginner-Friendliness: ~9. It is a fairly beginner-friendly editor when used within its scope of web development.
  • Customizability: 7. Some customization can be done via plugins, although the editor is designed just for web development so there is only so much customization you can do with it.
  • Features: ~8.
  • Stability & System Resource Usage: 6. Bugs are its main issue, but otherwise it is fairly light. The installed size of Brackets 1.6 (built from the PKGBUILD in my GitHub repository) on Arch Linux is 138.38 MB. For me it used 259.9 MB RAM while opened to my JScripts GitHub repository, with no optional (that is, those that do not come pre-installed with Brackets) plugins installed.
  • Overall: 7. In my books the fact it is difficult to get on most distributions and that its scope is limited to web development, is a weakness of this particular editor.

GNU Emacs

GNU Emacs 24.5 running under Arch Linux

GNU Emacs 24.5 running under Arch Linux

GNU Emacs is a free, GPL-licensed, extendable text editor developed as part of the GNU Project. It was originally developed in the mid 1980s by Richard Stallman, the founder of the GNU Project. It is written in C and its own purpose-built language, Emacs Lisp, and has both a command-line and graphical user interface (GUI). Its GUI is built using the GTK+ toolkit (presently GTK+ 3 is being used) on Linux. At its heart is an interpreter for the Emacs Lisp programming language and it is through this language that users can extend Emacs’ functionalities with plugins and configuration scripts (with its main configuration script being ~/.emacs, by default).

As far as its start-up time goes it is faster than Atom and uses less RAM and hard disk drive (HDD) space, but has a longer start-up time and uses more RAM/HDD space than Vim. For example, on Arch Linux emacs 24.5-3 takes up 99.43 MB HDD space.

Emacs is a much more difficult editor to learn and use efficiently than the beginner-friendly editors Atom, gedit, Kate and Notepad. Most actions in Emacs are controlled by combination keyboard shortcuts. This as opposed to Vim that is controlled by keyboard inputs that need not be provided simultaneously (that is, they can be successive, one after the other). Although the GUI of Emacs has a toolbar with drop-down menus in it, like most graphical text editors. There is also a plugin for Emacs that gives Emacs more Vim-like keyboard shortcuts, it is called Spacemacs. It uses buffers (as opposed to tabs or panes) for working on more than one file, or action (e.g., one buffer might be for a terminal emulator) at a time. You can navigate through your various buffers using keyboard shortcuts.

Installation

GNU Emacs is easily installed on most (if not all) Linux distributions as it is found in the official software repositories of most distributions. Distributions with it in their official repositories include:1

  • Arch Linux
  • CentOS
  • Debian
  • Fedora
  • Gentoo Linux
  • Linux Mint
  • Mageia
  • Manjaro Linux
  • openSUSE
  • Sabayon Linux
  • Ubuntu

Customization

Virtually every facet of Emacs’ appearance and behaviour can be customized via modifying its configuration script, ~/.emacs, or by installing extra packages. In fact, from what I hear2 Emacs is more extendable than Vim. In my opinion, however, the Emacs Lisp language is more complicated than the CoffeeScript, CSS, JavaScript and Less computer languages that Atom is extended with. I also find it more difficult to understand than the Vim script (or VimL) language used to extend Vim. Although, as always, it is really dependent on the individual in question as to which language(s) are more or less complicated, with respect to Emacs Lisp.

I personally use the Spacemacs package, which gives Emacs a new (in my opinion, better) look and turns it into a modal editor like Vim. It also changes the default configuration script from ~/.emacs to ~/.spacemacs. If you would like to see my Spacemacs file see this GitHub repository of mine.

Features and Merits

General

Emacs’s general merits include:

  • In-built support for running git commands without a terminal.
  • Syntax-highlighting for a wide range of different computer languages. Languages that are not supported by default can be supported by the installation of optional packages.
  • In-built terminal buffer for running shell commands. I use the term-toggle package to make it easier to toggle the terminal buffer.
  • Web browser buffer for searching the web, this is not in-built (that is, it does not come bundled with Emacs, by default). Further information on this can be found here at the EmacsWiki.
  • File manager, you can get an embedded file manager within Emacs using the neotree package.

Blog Writing

GNU Emacs can be turned into a reasonable blog writer, particularly for the markdown format using the markdown-mode package.

Ratings

  • Availability: 10. Every Linux distribution I am familiar with has it in their official repositories.
  • Beginner-Friendliness: 4. Not quite as challenging for newcomers to use as Vim, in my opinion.
  • Customizability: 9. Probably the single most configurable text editor available.
  • Features: 9. I essentially think of it as a Swiss army knife, with several features built-in that are not usually associated with a text editor.
  • Stability & System Resource Usage: 7-8. Version 24.5-3 used 121.5 MB RAM on my Arch Linux machine, with Spacemacs installed. Its installed size was 99.43 MB.
  • Overall: 7. Its low level of beginner-friendliness is a bit of a deal-breaker to me.

Komodo Edit

Komodo Edit 10.0.0 running on Arch Linux

Komodo Edit 10.0.0 running on Arch Linux

Komodo Edit is a free (licensed under the Mozilla Public License) text editor built on the source code of Mozilla Firefox and developed by ActiveState. It is written in JavaScript, Python and C++ and is the open-source version of the proprietary Komodo IDE integrated development environment. It has a repository of themes and packages that can be found here. I personally find it fairly extensible, but not as extensible as Atom, Emacs or Vim. I have also found it a real pain to compile from source code, so much of a pain that in a cross-distribution shell script installer I wrote for it (komodo-installer) I decided to omit a source code install option. This is because it requires an older version of autotools (2.13) than presently in the official repositories of the more up-to-date distributions like day-to-day one, Arch Linux.

Installation

Komodo Edit while not in the official repositories of any Linux distribution I am aware of, can be easily installed on x86 and x86_64 Linux systems from the binary tarball releases on the Komodo Edit home page. You can browse available binary tarballs here, although beware half of the binary tarballs are for Komodo IDE. I have written a shell script installer (komodo-installer) for Komodo Edit that should work on most major Linux distributions (including all distributions in the top 10 most popular, as ranked by DistroWatch). If you experience any errors with it feel free to file a new issue, or if you have a solution to any problems you experience you may file a new pull request. To use this installer with cURL run:

user $  /bin/bash -c "$(curl -sL https://git.io/vrGbs)"

while to use it with wget, run:

user $  /bin/bash -c "$(wget -cqO- https://git.io/vrGbs)"

Customization

Customization of Komodo Edit is done via the Preferences dialog. In it you can select skins, packages and themes for the editor. Which are usually written in web languages, like CSS, JavaScript, Less, etc. It uses the same extension format as Mozilla Firefox does, xpi.

Ratings

  • Availability: 7. This is mostly thanks to my installer and official binary tarball releases.
  • Beginner-Friendliness: ~8. It is a fairly beginner-friendly editor.
  • Customizability: 7. Some customization can be done via plugins, but as its is the free version of a proprietary editor some customization is off-limit.
  • Features: ~8.
  • Stability & System Resource Usage: 6. Bugs are its main issue, but otherwise it is fairly light. The installed size of Komodo Edit 10.0.0 (built from the PKGBUILD in my GitHub repository) on Arch Linux is 264.66 MiB. For me it used 219.3 MB RAM while opened to my hexo-site GitHub repository, with no optional (that is, those that do not come pre-installed with Brackets) plugins installed.
  • Overall: 7. Its limited customizability is its main weakness.

LightTable

LightTable 0.8.1

LightTable 0.8.1

LightTable is a free and open-source IDE written in Clojure that is primarily intended for web development. It is built on the Electron framework too. So far it is in beta development, without a 1.0 release so far. Something that is unique about it is that it is fairly architecture-independent with an official binary tarball released for each new version that supports both 32-bit and 64-bit architectures. I have created a cross-distribution installer for LightTable on Linux and the major drama with installing it, in my opinion, is getting the dependencies. These dependencies are usually fairly old and out-dated (like the system library libudev.so.0) and hence can be challenging to get on newer distributions.

Installation

As previously mentioned I have created a cross-distribution installer for LightTable. Its GitHub repository is here. To use it, run:

user $  /bin/bash -c "$(curl -sL https://git.io/vr3pT)"

or:

user $  /bin/bash -c "$(wget -cqO- https://git.io/vr3pT)"

Customization

LightTable has an in-built plugin manager, which can be opened by going to View→Plugin Manager.

Features

It has syntax-highlighting, auto-indentation, etc. for most web computer languages and has an embedded web browser and file manager.

Ratings

  • Availability: 7. This is mostly thanks to my installer and official binary tarball releases.
  • Beginner-Friendliness: ~8. It is a fairly beginner-friendly editor.
  • Customizability: 7. Some customization can be done via plugins, but as it is intended just for web development there is some inherit limitations to its customizability.
  • Features: ~8.
  • Stability & System Resource Usage: 8. The installed size of LightTable 0.8.1 (built from the PKGBUILD in my GitHub repository) on Arch Linux is 128.83 MiB. For me it used 30.5 MB RAM while opened to my hexo-site GitHub repository, with no optional (that is, those that do not come pre-installed with Brackets) plugins installed.
  • Overall: 7. Its limited customizability is its main weakness.

Sublime Text

Sublime Text 3.3103 running on Arch Linux

Sublime Text 3.3103 running on Arch Linux

Sublime Text is a proprietary text editor that is available free of charge, although it will occasionally prompt the user asking for them to pay for a license until they do. It costs around $70 USD to purchase a license. It is written in C++ and Python, although its Python component is mostly for the purpose of allowing users to extend the editor with plugins. Sublime Text’s positive points compared to say Atom are that it starts faster and uses less RAM once started than Atom. It is more extendable than Brackets and LightTable, in my opinion, but roughly extendable as Visual Studio Code and less extendable than Atom, Emacs or Vim. At this point in time there are two major releases of Sublime Text, Sublime Text 2 (stable version) and Sublime Text 3 (development version). I mostly use Sublime Text 3, as it has more features.

Installation

Stable and development releases are provided as both Debian and tarball binaries for 32- and 64-bit Linux systems. I have not written an installer for it due to the fact it is a proprietary editor and I want my installers to only be for free and open-source editors.

Customization

As previously mentioned Sublime Text can be customized and extended using plugins written in Python. To install new packages go to Preferences→Package Control and select “Install Package” in menu that pops up.

Merits and Features

Sublime Text has in-built syntax-highlighting for the vast majority of popular computer languages out there. As mentioned earlier Sublime Text’s feature set can be extended using plugins. There are some limitations, for one, there is no embedded browser available for previews or no embedded terminal emulator.

Ratings

  • Availability: 8. The Debian and tarball binaries make it fairly easy to install on Linux.
  • Beginner-Friendliness: ~8. It is a fairly beginner-friendly editor.
  • Customizability: 8-9.
  • Features: ~8. Fairly feature-packed, but unfortunately no embedded terminal.
  • Stability & System Resource Usage: 7-8. The installed size of Sublime Text 3.3103 (built from the PKGBUILD in my GitHub repository) on Arch Linux is 16.35 MiB. For me it used 92.2 MB RAM while opened to my hexo-site GitHub repository, with no optional (that is, those that do not come pre-installed with Brackets) plugins installed.
  • Overall: 8. Its being proprietary-licensed is its main weakness, in my opinion.

Vim

gVim 7.4.1825 GTK+ 2 interface.

gVim 7.4.1825 GTK+ 2 interface.

Vim (short for Vi iMproved) is a free and incredibly extensible text editor that can be run from both the command-line and as a graphical editor called gVim. It is based on the original Vi UNIX text editor developed by Bill Joy in the mid 1970s, with several extra features built into it, such as syntax-highlighting support. Vim was first publically released in 1991 and is developed by Dutch programmer, Bram Moolenar. Presently the source code of Vim is hosted by GitHub. Its graphical version, gVim is built on Linux using the GTK+ toolkit, one can pass configure flags before its build to set which version of GTK+ (that is, GTK+ 2 vs. GTK+ 3) is used to build the graphical interface of the editor. It is licensed under its own charityware license that while free and open-source encourages users to give money to orphans in Uganda. Vim is written in C and its own programming language, through which the editor can also be extended, Vim script (VimL).

Vim’s chief advantage is that it is fairly lightweight, using fairly minimal hard disk space/RAM and having a negligible start-up time, especially when used from the command-line. It is also very cross-platform and can run on embedded systems, through SSH, and in several other situations wherein other editors seldom venture. Likewise Vim is very stable and I have never myself noticed any bugs in it not related to plugins I have installed.

Vim is a modal editor, which serves as both a blessing and a curse, depending on whom you ask. The term modal editor refers to the fact that Vim has two main modes: insert mode and normal mode. As you may guess you use insert mode to insert text and do most of your general editing. Normal mode, on the other hand, is the default mode (that is, the mode you Vim starts with) and is the one you use to perform several functions in Vim using your keyboard. Its modality is what makes Vim such a challenging editor to learn, but also a powerful editor once you have learnt its ways. If you have no prior experience with modal editors when you first start using Vim, you are in for quite the learning curve. I would recommend starting out with gVim, because at least with gVim you can use the drop-down menus to guide you on how to use it when you start off. After this I recommend running vimtutor as it will teach you the ropes, as it were of Vim.

Installation

Vim, both its command-line and graphical variants, is easy to install on the vast majority of Linux distributions via one’s package manager, as well as many *BSD derivatives such as FreeBSD, NetBSD and OpenBSD. The latest version of Vim at the time of writing is 7.4 (which was released in 2013), although patches (that are designed to make minor improvements on the editor and fix bugs) are released on a semi-daily basis. The latest patch version at the time of writing is number >1800 (making the overall latest version of Vim >7.4.1800). Most Linux distributions have at least Vim 7.4.300 in their official repositories.

Customization

Vim can be extensively customized via plugins written in VimL, although it is generally considered less extensible than GNU Emacs, due to limitations in this programming language. The way I usually customize Vim whenever I install it is I install the solarized colours theme, along with the NERDTree plugin (which inserts an embedded file browser into Vim) and Markdown support, so that I can edit The Hornery in it.

Merits and Features

Vim is extensible via plugins written in VimL, these plugins are enabled by using plugin managers like Vundle. You can install extra plugins via editing your ~/.vimrc file. Some plugins I know and love include:

  • fugitive.vim, a plugin that adds git support for Vim.
  • NERDTree, a plugin that adds an embedded file browser into Vim.
  • PKGBUILD.vim, a plugin that adds syntax-highlighting support for PKGBUILDs.
  • spec.vim, a plugin that adds syntax-highlighting and snippets support for spec (file extension: .spec) files.
  • vim-colors-solarized, a theme for Vim.

You can run terminal commands in it using the :! <COMMAND> command (where <COMMAND> is to be replaced with your shell command(s)). You can also add a tab bar to Vim to make it easier to switch between opened files using the TabBar plugin.

Ratings

  • Availability: 10. Available from official repositories of most Linux distributions and *BSDs.
  • Beginner-Friendliness: ~2. Odds are you will not even be able to use it at all until you learn more about this unique editor.
  • Customizability: 9.
  • Features: 8-9. Fairly feature-packed, but unfortunately no embedded terminal.
  • Stability & System Resource Usage: 9. The installed size of gVim 7.4.1828 (built from the PKGBUILD in my GitHub repository) on Arch Linux is 28.98 MiB. For me it used just 15.6MB RAM with its GTK+ 3 GUI.
  • Overall: 8. Its lack of beginner-friendliness is its chief disadvantage, in my books.

Visual Studio Code

Visual Studio Code 1.0.0

Visual Studio Code 1.0.0

Visual Studio Code (or VSCode) is a free (MIT-Licensed) text editor that is written in CSS, JavaScript and TypeScript and built using the Electron framework. It is developed by Microsoft, and while its source code is MIT-Licensed, pre-compiled Linux binaries for it are licensed under a proprietary End-User License Agreement (EULA). I only learnt about it through a friend, in fact, when I wrote the A Comparison of Free and Open-Source Text Editors and IDEs for Manjaro and Sabayon Linux post I did not know about it. VSCode is designed to be a lighter-weight editor (although whether its developers succeeded in this, is a matter for debate) than more feature-packed editors like Atom, despite being fairly feature-filled. I personally think of VSCode as an inferior, yet similar product to Atom. The only respect I have found it superior to Atom is that it is has a grammar- and spell-checking package for markup files, as opposed to Atom which only has a spell-checker. Its inferiority is with respect to the fact that it does not have extensions that give it an embedded terminal. Plus it generally has fewer packages/themes than Atom.

Installation

VSCode can be installed via a number of different methods, although it is not in the official repositories of any Linux distribution I am aware of. The closest thing to a distribution with VSCode in its official repositories that I have come across is Arch Linux, which has VSCode (provided by several different packages) in the Arch User Repository. To simplify the installation process I have created my own shell installer for VSCode (GitHub repository: vscode-installer). It provides users with two main options, for most Linux distributions, they are:

  • Install from a binary package (usually a Debian, RPM package or zip binary provided by Microsoft)
  • Install from source code

To use this installer run:

user $  /bin/bash -c "$(curl -sL https://git.io/vrLNn)"

or, alternatively, if you would rather use wget to get the quick-install script:

user $  /bin/bash -c "$(wget -cqO- https://git.io/vrLNn)"

Customization

VSCode can be extensively customized using plugins written in CSS, JavaScript and TypeScript. Unfortunately, VSCode does not have support for an embedded terminal or web browser, regardless of any installed extensions. Plugins are search for and installed via opening the command pallette (with the keyboard shortcut Ctrl+Shift+P) and typing ext install, then pressing Enter. Users can also customize VSCode’s behaviour by editing the user’s settings by going to File→Preferences→User Settings and editing one’s ~/.config/Code/User/settings.json file. For example, here’s a settings.json file to get VSCode to syntax-highlight .desktop, .directory, .install and PKGBUILD files:

{
    "files.associations": {
        "PKGBUILD":    "shellscript",
        "*.install":   "shellscript",
        "*.desktop":   "ini",
        "*.directory": "ini"
    }
}

Features

It has syntax-highlighting for the vast majority of programming, markup and stylesheet languages. It also has code auto-suggestions for a variety of programming languages. It also has in-built support for running git commands without a terminal, as well as an in-built debugger. Additionally it has an in-built file browser. By default, if more than one file is to be opened simultaneously, additional files will be opened in a new pane. Despite this, it has no tabs, no embedded terminal or web browser, not even with extensions can these capabilities be added. Although tabs are planned for a future release.

Ratings

  • Availability: 7.
  • Beginner-Friendliness: ~8.
  • Customizability: 8.
  • Features: 8-9. Fairly feature-packed, but unfortunately no embedded terminal.
  • Stability & System Resource Usage: 7. The installed size of Visual Studio Code 1.1.1 (built from the PKGBUILD in my GitHub repository) on Arch Linux is 131.43 MiB. For me it used just 486.5 MB RAM when running, opened to a single file with a single working directory.
  • Overall: 8.

Summary

Table 1: A Comparison of Text Editors and Integrated Development Environments

Program Version License Developer Written In AV BF CMB Tabs Panes FM? WB? TE? HDD RAM OA
Atom 1.7.3 MIT GitHub CoffeeScript, CSS, JS, Less 7 9 9 Yes Yes Yes Optional Optional 222.91 276.5 9
Brackets 1.6 MIT Adobe CSS, HTML and JS 6 9 8 No Yes Yes Yes Optional 138.38 259.9 7
GNU Emacs 24.5-3 GPLv3 GNU Project C, Emacs Lisp 10 4 9 Optional Yes Optional Optional Yes 99.43 121.5 8
Komodo Edit 10.0.0 MPL ActiveState C, CSS, HTML, JS, Python 7 8-9 8 Yes Yes (H) Yes Yes Yes 264.66 219.3 8
LightTable 0.8.1 MIT Kodowa Clojure, CSS, JS 6 8-9 7 Yes Yes (V) Yes Yes No 128.83 30.3 8
Sublime Text 3.3103 EULA Sublime HQ C++, Python 7 9 8 Yes Yes Yes No No 16.35 92.2 8
Vim 7.4.1828 Vim Bram Moolenaar C, C++, VimL 10 2 9 Yes Yes Optional Optional Partial 28.98 15.6 8
Visual Studio Code 1.1.1 MIT Microsoft CSS, JS, TypeScript 7 9 8 No Yes Yes No No 131.43 486.5 8

Footnotes

  1. But are not limited to, if I listed every single distribution with emacs in their official repositories I would be here all day. 

  2. Keeping in mind that this is second-hand knowledge, not my own, as I simply do not understand Emacs Lisp or VimL enough to know this in my own right. 

Comments