{"id":19958,"date":"2018-01-04T12:15:57","date_gmt":"2018-01-04T10:15:57","guid":{"rendered":"https:\/\/www.webcodegeeks.com\/?p=19958"},"modified":"2018-01-03T11:26:39","modified_gmt":"2018-01-03T09:26:39","slug":"5-code-editors-web-application-api-development","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/","title":{"rendered":"5 Code Editors for Web Application and API Development"},"content":{"rendered":"<p>If there\u2019s anything more guaranteed to start a flame war than the question of tabs versus spaces, it\u2019s asking which IDE or text editor a developer uses. Asking if a developer uses an IDE, especially, can often start a flame war all its own.<\/p>\n<p>However, being a laid-back Australian, flame wars don\u2019t bother me one little bit. So in this article, I\u2019m going to go through seven of the best code editors (including both text editors and IDEs) around today. The trouble with doing anything like this, however, is that there are just so many of them.<\/p>\n<p>From the absolute plethora of open-source tools, such as <em>VIM<\/em>, <em>Emacs<\/em>, and <em>SublimeText<\/em>, to the commercial tools, such as the IntelliJ suite from JetBrains, the Visual Studio suite, or Xcode from Apple, there are just so many to choose from. So to constrain the editor choice, I\u2019m going to work from my experience: web application and API development.<\/p>\n<p>Based on that paradigm, I\u2019ve picked five code editors to consider, which I have gained differing levels of experience with over the last 20-something years of slinging code. They\u2019re not all equal in functionality. However, to those that use and love them, they\u2019re the best choice \u2014 period! That\u2019s why they\u2019re included.<\/p>\n<p>I\u2019m not going to detail every feature on offer. However, I will give you:<\/p>\n<ul>\n<li>A good overview of each one.<\/li>\n<li>A set of some compelling reasons to use them.<\/li>\n<li>Some of the areas in which they don\u2019t compare as favorably or where you might need to tread with caution when using them.<\/li>\n<\/ul>\n<h2>The IntelliJ Suite<\/h2>\n<figure id=\"attachment_19964\" aria-describedby=\"caption-attachment-19964\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/gogland-one.png\"><img decoding=\"async\" class=\"wp-image-19964\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/gogland-one.png\" alt=\"\" width=\"860\" height=\"525\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/gogland-one.png 1024w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/gogland-one-300x183.png 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/gogland-one-768x469.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-19964\" class=\"wp-caption-text\">Gogland<\/figcaption><\/figure>\n<p>Starting off the review is <a href=\"https:\/\/www.jetbrains.com\/products.html?fromMenu\">the IntelliJ suite of tools<\/a>, including (among others) <em>PhpStorm<\/em>, <em>CLion<\/em>, <em>PyCharm<\/em>, <em>Gogland<\/em>, <em>RubyMine<\/em>, and <em>AppCode<\/em>. There are more IDEs in the suite, but this is a good sampling of what\u2019s on offer.<\/p>\n<p>The IntelliJ suite, from JetBrains, is available for all major operating systems. Users of their products usually rave about them and are often intensely loyal. I know that, for the most part, as a user of PhpStorm and Gogland, I am. However, enough with the sales pitch, here\u2019s an overview.<\/p>\n<p>Based on the underlying IntelliJ engine, each of JetBrain\u2019s IDEs targets either a specific language or task, such as the languages mentioned above. And each of them looks quite similar to the others, so much so that if you\u2019ve used one, you will be almost instantly familiar with any of them. Just take the screenshot above, of Gogland (their Go IDE), and the one below, of PhpStorm (their PHP IDE).<\/p>\n<figure id=\"attachment_19965\" aria-describedby=\"caption-attachment-19965\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/phpstorm.png\"><img decoding=\"async\" class=\"wp-image-19965\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/phpstorm.png\" alt=\"\" width=\"860\" height=\"525\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/phpstorm.png 1024w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/phpstorm-300x183.png 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/phpstorm-768x469.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-19965\" class=\"wp-caption-text\">PhpStorm<\/figcaption><\/figure>\n<p>You can see that they provide a professional looking setup, allowing for one or more files in a project to be open simultaneously. These windows are arrangeable in a variety of ways, as best suits each developer. Also, there are the related views or windows into a project.<\/p>\n<p>These include:<\/p>\n<ul>\n<li><strong>The project view.<\/strong> It shows all the files in a project.<\/li>\n<li><strong>The structure view.<\/strong> It displays the structure of the currently active file. In the screenshot below, you can see that it\u2019s listed the three functions received by the <code>User<\/code> struct in Gogland, in alphabetic order.<\/li>\n<li><strong>The TODO view.<\/strong> It collates any <code>\/\/ TODO<\/code> type string anywhere in the code base.<\/li>\n<li><strong>The Version Control view.<\/strong> It lets you work with the version control system right from the IDE.<\/li>\n<li><strong>The Terminal view.<\/strong> It provides a lightweight terminal (or console) for running commands from the command line, for those who prefer that approach (me).<\/li>\n<li><strong>The Event Log view.<\/strong> It shows events that have occurred within the IDE.<\/li>\n<li><strong>The Database view.<\/strong> It provides access to the database that the app uses, without having to use (or pay for) an external tool.<\/li>\n<\/ul>\n<p>If you\u2019re not careful, or don\u2019t have a suitably large enough display, it can soon become quite cluttered.<\/p>\n<figure id=\"attachment_19966\" aria-describedby=\"caption-attachment-19966\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/gogland-two.png\"><img decoding=\"async\" class=\"wp-image-19966\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/gogland-two.png\" alt=\"\" width=\"860\" height=\"525\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/gogland-two.png 1024w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/gogland-two-300x183.png 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/gogland-two-768x469.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-19966\" class=\"wp-caption-text\">A very cluttered Gogland setup<\/figcaption><\/figure>\n<p>That said, each IDE, as I mentioned, is targeted to a specific language. Each includes:<\/p>\n<ul>\n<li>A range of preinstalled plugins that make working with that language as efficient as possible, such as <em>Gofmt<\/em>, <em>Golint<\/em>, and <em>Govet<\/em> when working with Go, or <em>Docker<\/em>, <em>Vagrant<\/em>, <em>Composer<\/em>, and <em>PHPUnit<\/em> when working with PHP.<\/li>\n<li>A run tool for running the code (including step-through debugging) and its tests, right from within the IDE.<\/li>\n<li>Extensive refactoring support, including support for <em>moving<\/em>, <em>extracting<\/em>, <em>deleting<\/em>, <em>renaming<\/em>, <em>pulling members up<\/em>, and <em>pushing members down<\/em>.<\/li>\n<li>Painless code navigation, including by <em>class<\/em>, <em>symbol<\/em>, and <em>function name<\/em>, <em>movement to a parent method<\/em>, <em>implementation<\/em>, or somewhere in the call hierarchy.<\/li>\n<li>Inspections and intentions. These are static analysis checks, such as for <em>correctness<\/em>, <em>security<\/em>, and <em>style issues<\/em>.<\/li>\n<\/ul>\n<p>You can <a href=\"https:\/\/www.jetbrains.com\/store\/?fromMenu#edition=commercial\">buy most of the IDEs<\/a>, individually, for around $199.00 USD, or an all-products-pack for around $649.00 USD. However, these prices are just for one year. Each year there\u2019s a subscription renewal, which tiers downward each year. Depending on your situation, that might be quite expensive. Alternatively, you might have a boss who will pay for it. Either way, it\u2019s something worth bearing in mind.<\/p>\n<h2>Atom<\/h2>\n<figure id=\"attachment_19967\" aria-describedby=\"caption-attachment-19967\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/atom-editor.png\"><img decoding=\"async\" class=\"wp-image-19967\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/atom-editor.png\" alt=\"\" width=\"860\" height=\"525\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/atom-editor.png 1024w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/atom-editor-300x183.png 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/atom-editor-768x469.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-19967\" class=\"wp-caption-text\">The Atom editor<\/figcaption><\/figure>\n<p>The next editor is <a href=\"https:\/\/atom.io\">Atom<\/a>, from GitHub, available for all the major operating systems. It is self-described as:<\/p>\n<blockquote><p>A hackable text editor for the 21st century\u2026<\/p><\/blockquote>\n<p>Quoting them further:<\/p>\n<blockquote><p>Atom is a text editor that\u2019s modern, approachable, yet hackable to the core \u2014 a tool you can customize to do anything but also use productively without ever touching a config file.<\/p><\/blockquote>\n<p>What\u2019s quite interesting about it, and perhaps sets it apart from the others, is that it\u2019s built with <a href=\"https:\/\/electron.atom.io\">the Electron framework<\/a>, a combination of <em>HTML<\/em>, <em>JavaScript<\/em>, <em>CSS<\/em>, and <em>Node.js<\/em>. Given that, it likely will never feel as heavy as the IntelliJ (Java-based) IDEs would.<\/p>\n<p>By default, it supports the following features:<\/p>\n<ul>\n<li>Cross-platform editing<\/li>\n<li>Built-in package manager<\/li>\n<li>Smart auto-completion<\/li>\n<li>File system browser<\/li>\n<li>Multiple panes<\/li>\n<li>Find and replace<\/li>\n<\/ul>\n<p>In addition to these features, you can choose from a diverse and ever-growing range of open-source packages, (split into four categories: <em>community<\/em>, <em>core<\/em>, <em>development<\/em>, and <em>git<\/em>), if the default functionality does not do what you want.<\/p>\n<p>They include packages for <em>the Asciidoc format<\/em>, <em>beautification<\/em>, <em>linting<\/em>, <em>Pandoc<\/em>, <em>line sorting<\/em>, and <em>VIM emulation<\/em>. More than likely, the default installation is not going to do all that you want. While it provides a lot right from the start, it\u2019s only a start.<\/p>\n<p>Whereas JetBrains offers a range of IDEs custom-built for specific languages and tasks, Atom is an almost generic code editor. That\u2019s not to downplay it, however. With a little bit of work, you can configure it to be extremely powerful. In the short time that it\u2019s been around, it\u2019s garnered quite a cult following.<\/p>\n<p>And why not? It\u2019s an incredibly customizable and themeable editor. You can see from the screenshot below that it\u2019s very similar in look and feel to the IntelliJ suite, yet without as many <em>windows<\/em>, <em>tabs<\/em>, <em>toolbars<\/em>, and <em>add-ins<\/em>.<\/p>\n<h2>Visual Studio Code<\/h2>\n<figure id=\"attachment_19968\" aria-describedby=\"caption-attachment-19968\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/vs-code.png\"><img decoding=\"async\" class=\"wp-image-19968\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/vs-code.png\" alt=\"\" width=\"860\" height=\"525\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/vs-code.png 1024w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/vs-code-300x183.png 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/vs-code-768x469.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-19968\" class=\"wp-caption-text\">Visual Studio Code<\/figcaption><\/figure>\n<p>Then there\u2019s a newer addition to the list, <a href=\"https:\/\/code.visualstudio.com\">Visual Studio Code<\/a> (or <em>VS Code<\/em>, or even simpler: <em>Code<\/em>), from Microsoft. Also built with the Electron framework, like Atom, Visual Studio Code was released by Microsoft on November 18, 2015, and made its first release on April 14, 2016.<\/p>\n<p>Available for all the major operating systems, Code supports:<\/p>\n<ul>\n<li>File editing.<\/li>\n<li>Debugging (available for <em>JavaScript<\/em>, <em>TypeScript<\/em>, <em>C#<\/em>, <em>F#<\/em>, <em>C\/C++<\/em>, <em>Python<\/em>, and <em>PHP<\/em>).<\/li>\n<li>Version Control integration (Git).<\/li>\n<li>Syntax-highlighting, available for a large range of languages and file formats, including <em>C\/C#\/C++<\/em>, <em>CSS<\/em>, <em>diffs<\/em>, <em>Dockerfile<\/em>, <em>Go<\/em>, <em>HTML<\/em>, <em>JSON<\/em>, <em>Java<\/em>, <em>JavaScript<\/em>, and <em>PHP<\/em>.<\/li>\n<li>Code completion, available for <em>CSS<\/em>, <em>HTML<\/em>, <em>JavaScript<\/em>, <em>JSON<\/em>, <em>Less<\/em>, <em>Sass<\/em>, and <em>TypeScript<\/em>.<\/li>\n<li>Code refactoring.<\/li>\n<li>Code snippets, available for <em>Groovy<\/em>, <em>Markdown<\/em>, <em>PHP<\/em>, and <em>Swift<\/em>.<\/li>\n<\/ul>\n<p>Code\u2019s interface seems to walk an impressive line between an augmented text editor and IDE. It can view multiple code windows simultaneously as well asgroup them, a feature available in most IDEs and editors.<\/p>\n<p>It also has sub-windows, such as for <em>git version control<\/em>, <em>code errors<\/em>, <em>line endings<\/em>, and <em>syntax highlighting<\/em>, among a range of others. Like Atom, it\u2019s primarily configured by having to edit a text configuration file.<\/p>\n<p>However, Atom had the advantage of having a UI for a default set of options. And, like Atom and the IntelliJ suite, Code can be rapidly augmented by an ever-growing list of extensions. You can find the complete list on <a href=\"https:\/\/code.visualstudio.com\/docs\/editor\/extension-gallery\">the VS Code Extension Marketplace<\/a>.<\/p>\n<p>There, you will find extensions for areas including <em>basic editing<\/em>, <em>IntelliSense<\/em>, <em>code navigation<\/em>, <em>debugging<\/em>, <em>version control<\/em>, <em>the command line<\/em>, and <em>accessibility<\/em>.<\/p>\n<h2>Sublime Text<\/h2>\n<figure id=\"attachment_19969\" aria-describedby=\"caption-attachment-19969\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/sublimetext.png\"><img decoding=\"async\" class=\"wp-image-19969\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/sublimetext.png\" alt=\"\" width=\"860\" height=\"501\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/sublimetext.png 1024w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/sublimetext-300x175.png 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/sublimetext-768x448.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-19969\" class=\"wp-caption-text\">Sublime Text<\/figcaption><\/figure>\n<p>Now, I want to look at one of the older, more veteran, editors, <a href=\"https:\/\/www.sublimetext.com\">Sublime Text<\/a>. It\u2019s one beloved of the developers who\u2019ve used it since the early releases. Earlier versions were completely free.<\/p>\n<p>More recent versions have a limited free usage period before requiring a license for continued usage. However, at the cost of only $80 USD, it is a small price to pay for an editor as capable as Sublime.<\/p>\n<p>Here\u2019s why. Recently releasing version 3, Sublime Text is self-described as:<\/p>\n<blockquote><p>A sophisticated text editor for code, markup, and prose.<\/p><\/blockquote>\n<p>Available for the major operating systems, it is quite similar in layout to both Atom and VS Code. I can\u2019t say for sure, but my feeling is that it inspired both editors to some significant degree. Again, similar to them as well as the IntelliJ suite, Sublime Text supports an extensive range of functionality, including:<\/p>\n<ul>\n<li><strong>Goto Anything &amp; Goto Definition:<\/strong> These let you navigate through a code base almost with ease. Quite similar to IntelliJ, you can navigate via <em>function<\/em>, <em>class<\/em>, <em>file name<\/em>, <em>symbol<\/em>, and <em>line<\/em>.<\/li>\n<li><strong>Multiple selections:<\/strong> This is a crazy feature in Sublime Text (and emulated in other editors) that lets you edit several selections of the same text block simultaneously.<\/li>\n<li><strong>Command Palette:<\/strong> This allows you to initiate almost any functionality in Sublime Text just by searching for its name and running it.<\/li>\n<li><strong>Code folding:<\/strong> Some code files, functions, and blocks can be somewhat unwieldy. Code folding lets you fold (or compress) blocks at various levels so that the file is more accessible.<\/li>\n<li><strong>Macros:<\/strong> This is basic automation, allowing you to string a series of commands together for later reuse.<\/li>\n<li><strong>Split editing:<\/strong> This allows, as in the other IDEs and editors, the ability to view multiple files simultaneously, as well as look at the same file simultaneously.<\/li>\n<\/ul>\n<p>It\u2019s also heavily customizable. As with the other IDEs and editors, you can, via the package manager or <a href=\"https:\/\/packagecontrol.io\">Package Control<\/a>, the website version of the package manager, search for an extensive range of add-on packages.<\/p>\n<figure id=\"attachment_19970\" aria-describedby=\"caption-attachment-19970\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/packagecontrol.png\"><img decoding=\"async\" class=\"wp-image-19970\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/packagecontrol.png\" alt=\"\" width=\"860\" height=\"666\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/packagecontrol.png 1024w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/packagecontrol-300x232.png 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/packagecontrol-768x595.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-19970\" class=\"wp-caption-text\">Package Control<\/figcaption><\/figure>\n<p>Focusing on Package Control, you can find packages for:<\/p>\n<ul>\n<li>Syntax highlighting<\/li>\n<li>Color schemes<\/li>\n<li>Listing<\/li>\n<li>Auto-completion<\/li>\n<li>Theming<\/li>\n<li>Text manipulation<\/li>\n<li>Formatting<\/li>\n<li>Build systems<\/li>\n<\/ul>\n<p>Then there are snippets. Snippets allow you to avoid typing the same things repeatedly, such as HTML table templates and code file boilerplate. Instead, you can set up a snippet with a trigger word, such as <code>class<\/code>. When you type it and press tab, you could generate the example below, for a PHP class.<\/p>\n<pre class=\"brush:php\">*\/\r\nclass User\r\n{\r\n    \/**\r\n     * User constructor.\r\n     *\/\r\n    public function __construct()\r\n    {\r\n\r\n    }\r\n}<\/pre>\n<p>If you\u2019re keen to get started quickly with Sublime Text, there\u2019s also a book and video package available, called <a href=\"https:\/\/sublimetextbook.com\"><em>Sublime Text Power User<\/em><\/a>. It will teach you all you need to know to become a power user, by one of the best trainers out there on the web today, <a href=\"https:\/\/www.wesbos.com\">Wes Bos<\/a>.<\/p>\n<p>These are a testament to just how passionate and committed people can be to this seemingly simple editor. It has inspired a rabid following!<\/p>\n<h2>Vim<\/h2>\n<figure id=\"attachment_19971\" aria-describedby=\"caption-attachment-19971\" style=\"width: 860px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/vim.png\"><img decoding=\"async\" class=\"wp-image-19971\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/vim.png\" alt=\"\" width=\"860\" height=\"558\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/vim.png 1024w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/vim-300x195.png 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2018\/01\/vim-768x498.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><figcaption id=\"caption-attachment-19971\" class=\"wp-caption-text\">Vim<\/figcaption><\/figure>\n<p>At least to my mind, no discussion about code editors would be complete without mentioning Vim (or <em>Emacs<\/em>, <em>Pico<\/em>, <em>Ed<\/em>, and <em>Nano<\/em>). No disrespect to the latter four, but Vim\u2019s been my go-to editor for several years, and one that, <a href=\"https:\/\/pragprog.com\/book\/dnvim2\/practical-vim-second-edition\">after you develop sufficient knowledge and muscle memory<\/a>, it will be something you will find hard to let go of.<\/p>\n<p>Modeled on the earlier VI, Vim is a 30+-year-old text editor that\u2019s seen a resurgence in recent years among younger developers, most notably those in the Ruby community. Why? It\u2019s hard to say. However, that it is a testament to its durability.<\/p>\n<p>Here are a few possible reasons:<\/p>\n<ul>\n<li>It\u2019s been around for as long as it has, and it\u2019s in the developer consciousness.<\/li>\n<li>It\u2019s available on any Unix\/Linux box you\u2019re likely to touch.<\/li>\n<li><a href=\"https:\/\/github.com\/tpope\">Tim Pope<\/a>. If you\u2019ve been around Vim for even a little while, you\u2019ll have heard of Tim. I think he\u2019s contributed more to the Vim community than just about anyone else, with such plugins as vim-fugitive, vim-obsession, vim-sleuth, vim-rails, vim-commentary, vim-markdown, and my favorite, vim-surround.<\/li>\n<li><a href=\"http:\/\/drewneil.com\">Drew Neil<\/a>. Drew\u2019s the host of <a href=\"http:\/\/vimcasts.org\">VimCasts.org<\/a>, the site that teaches you all about Vim, one video at a time.<\/li>\n<li>Books, such as the excellent <a href=\"https:\/\/pragprog.com\/book\/dnvim2\/practical-vim-second-edition\"><em>Practical Vim<\/em><\/a> (also by Drew Neil), and sites such as <a href=\"https:\/\/vimawesome.com\/\">Vim Awesome<\/a> abound, so you\u2019re never likely to be stuck on anything for too long.<\/li>\n<\/ul>\n<p>Moreover, if it\u2019s not already installed, it will only take a minute or two. I\u2019m not aware of any package manager that doesn\u2019t provide support for it.<\/p>\n<p>Unlike all of the other editors discussed here, Vim is a no-nonsense, no-frills text editor that can be customized, tuned, configured, and adjusted to suit nearly any need.<\/p>\n<p>From writing text and prose, such as <a href=\"https:\/\/www.masterzendframework.com\/zend-expressive-essentials\/\">my recently published <em>Zend Expressive Essentials<\/em> book<\/a>, which was written in the Asciidoctor format, to maintaining the ownCloud documentation, which is written using the reStructuredText format, to writing Go applications, which you can see in the screenshot below, Vim is amazingly versatile.<\/p>\n<p>By default, however, it doesn\u2019t support a significant amount of functionality. However, thanks to plugins such as those by Tim and others, you can make it do almost what you want.<\/p>\n<p>Then on top of plugins, you can create configurations via <code>.vimrc<\/code> files, such as <a href=\"https:\/\/github.com\/settermjd\/vim-for-technical-writers\">the one that I created<\/a>, to bundle both plugins and accompanying configuration together.<\/p>\n<p>As an example, my configuration ensures my Vim setup has support for <em>PHP<\/em>, <em>Go<\/em>, <em>Ruby<\/em>, <em>Python<\/em>, <em>Asciidoc<\/em>, <em>reStructuredText<\/em>, <em>Markdown<\/em>, <em>JavaScript<\/em>, <em>NodeJS<\/em>, and <em>professional writing<\/em>.<\/p>\n<h2>In Conclusion<\/h2>\n<p>That has been a rapid run through of five of the most used code editors available today for web application (and other) development. As I mentioned earlier, there are just too many editors and IDEs available today to hope to cover them all.<\/p>\n<p>However, this has been my attempt to look at five of the best, along with a series of arguments that make them compelling choices. Is yours on the list? Would you choose any of them? Would you choose none of them?<\/p>\n<p>As a passionate software engineer, I would love to know your thoughts.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>Published on Web Code Geeks with permission by Matthew Setter, partner at our <a href=\"http:\/\/www.webcodegeeks.com\/join-us\/wcg\/\" target=\"_blank\" rel=\"noopener\">WCG program<\/a>. See the original article here: <a href=\"https:\/\/blog.codeship.com\/5-code-editors-for-web-application-and-api-development\/\" target=\"_blank\" rel=\"noopener\">5 Code Editors for Web Application and API Development<\/a><\/p>\n<p>Opinions expressed by Web Code Geeks contributors are their own.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>If there\u2019s anything more guaranteed to start a flame war than the question of tabs versus spaces, it\u2019s asking which IDE or text editor a developer uses. Asking if a developer uses an IDE, especially, can often start a flame war all its own. However, being a laid-back Australian, flame wars don\u2019t bother me one &hellip;<\/p>\n","protected":false},"author":119,"featured_media":927,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-19958","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>5 Code Editors for Web Application and API Development - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"If there\u2019s anything more guaranteed to start a flame war than the question of tabs versus spaces, it\u2019s asking which IDE or text editor a developer uses.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"5 Code Editors for Web Application and API Development - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"If there\u2019s anything more guaranteed to start a flame war than the question of tabs versus spaces, it\u2019s asking which IDE or text editor a developer uses.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2018-01-04T10:15:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Matthew Setter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@settermjd\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Setter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/\"},\"author\":{\"name\":\"Matthew Setter\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/b05e82f4b706b29d2bfb20134e3d2f35\"},\"headline\":\"5 Code Editors for Web Application and API Development\",\"datePublished\":\"2018-01-04T10:15:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/\"},\"wordCount\":2538,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg\",\"articleSection\":[\"Web Dev\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/\",\"name\":\"5 Code Editors for Web Application and API Development - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg\",\"datePublished\":\"2018-01-04T10:15:57+00:00\",\"description\":\"If there\u2019s anything more guaranteed to start a flame war than the question of tabs versus spaces, it\u2019s asking which IDE or text editor a developer uses.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web Dev\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/web-development\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"5 Code Editors for Web Application and API Development\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/b05e82f4b706b29d2bfb20134e3d2f35\",\"name\":\"Matthew Setter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/93462db49ad0350a33d70149761702068941d2e0c07150ae8c32df9512fc2bde?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/93462db49ad0350a33d70149761702068941d2e0c07150ae8c32df9512fc2bde?s=96&d=mm&r=g\",\"caption\":\"Matthew Setter\"},\"description\":\"Matthew Setter is a developer and technical writer. He creates web-based applications and technical content that engage developers with platforms, technologies, applications, and tools.\",\"sameAs\":[\"https:\/\/x.com\/settermjd\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/matthew-setter\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"5 Code Editors for Web Application and API Development - Web Code Geeks - 2026","description":"If there\u2019s anything more guaranteed to start a flame war than the question of tabs versus spaces, it\u2019s asking which IDE or text editor a developer uses.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/","og_locale":"en_US","og_type":"article","og_title":"5 Code Editors for Web Application and API Development - Web Code Geeks - 2026","og_description":"If there\u2019s anything more guaranteed to start a flame war than the question of tabs versus spaces, it\u2019s asking which IDE or text editor a developer uses.","og_url":"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2018-01-04T10:15:57+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg","type":"image\/jpeg"}],"author":"Matthew Setter","twitter_card":"summary_large_image","twitter_creator":"@settermjd","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Matthew Setter","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/"},"author":{"name":"Matthew Setter","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/b05e82f4b706b29d2bfb20134e3d2f35"},"headline":"5 Code Editors for Web Application and API Development","datePublished":"2018-01-04T10:15:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/"},"wordCount":2538,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg","articleSection":["Web Dev"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/","url":"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/","name":"5 Code Editors for Web Application and API Development - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg","datePublished":"2018-01-04T10:15:57+00:00","description":"If there\u2019s anything more guaranteed to start a flame war than the question of tabs versus spaces, it\u2019s asking which IDE or text editor a developer uses.","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/web-development\/5-code-editors-web-application-api-development\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Web Dev","item":"https:\/\/www.webcodegeeks.com\/category\/web-development\/"},{"@type":"ListItem","position":3,"name":"5 Code Editors for Web Application and API Development"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/b05e82f4b706b29d2bfb20134e3d2f35","name":"Matthew Setter","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/93462db49ad0350a33d70149761702068941d2e0c07150ae8c32df9512fc2bde?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/93462db49ad0350a33d70149761702068941d2e0c07150ae8c32df9512fc2bde?s=96&d=mm&r=g","caption":"Matthew Setter"},"description":"Matthew Setter is a developer and technical writer. He creates web-based applications and technical content that engage developers with platforms, technologies, applications, and tools.","sameAs":["https:\/\/x.com\/settermjd"],"url":"https:\/\/www.webcodegeeks.com\/author\/matthew-setter\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/19958","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/119"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=19958"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/19958\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/927"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=19958"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=19958"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=19958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}