How to Pick the Perfect Programming Editor

Contributing Editor

code editorTo the outside world, developers can have an unhealthy fixation with their code editor. It’s not surprising — most of us spend longer with our IDE than our families. Sean’s recently-posted list of free editors provoked a plethora of debate about what is and what’s not the best coding tool.

There are dozens of code editors to choose from and many are freeware or open source. Ultimately, the choice is yours, whether it’s Windows Notepad, VIM or VisualStudio. However, there are a number of key IDE features that I’d recommend to all web developers.

Essential Features

An editor won’t remain on my PC if it doesn’t provide the following:

Speed and stability
The editor must start quickly and remain responsive. Sorry Eclipse and Aptana.

Multiple files / MDI interface
The days of opening a single source file are long gone. Tabs are my preferred choice of interface and they absolutely must support middle-click closing!

Multiple language support
Even the most basic web projects require HTML and CSS. A simple application is likely to add JavaScript, SQL, XML, and a server-side development language such as PHP, C#, VB, Java, Perl, Ruby or Python. Your editor should be able to effortlessly handle every type of code you choose.

Line wrapping and numbering
It may be bad practice, but long lines of code are sometimes necessary. The editor should let you view code without horizontal scrolling, so a line wrapping option is essential. When the inevitable error occurs at line 4321, you need to be able to find that bug quickly — so forget any editor that does not display line numbers.

Configurable color-coding
Missing quotes or tags can cause havoc, but color-coding can dramatically reduce your error rate. Bonus points are awarded for any editor offering fully-customizable color schemes.

Auto-complete
Microsoft VisualStudio sets the gold standard with IntelliSense. Few editors reach that level, but if I’m adding a <p> tag, you can guarantee I want a closing </p>. Please don’t make me type it!

Session store and restore
When the editor is restarted, it should restore the files you were working on, open them in the correct order and preferably at the last line you were editing.

File explorer
The option to open other files in the current project can save time.

Find and replace across files
How many times have you renamed a class or function? The editor should provide facilities to change all references quickly and easily.

Desirable Features

The following options are great if they’re available:

Debugging tools
Debugging facilities range from absolutely essential (.NET or Java), to useful (PHP or Perl), to unnecessary (JavaScript — unless it’s better than Firebug!) Make sure your editor provides the debugging tools you need.

Bookmarking
Jumping between functions in the same file is easier if you can bookmark individual lines.

Multiple views
Similarly, it can be useful to ‘split’ a file into multiple windows so different segments can be edited at the same time.

Code-folding
The facility to collapse or expand segments allows you to concentrate on the important code.

Code explorer
Again, VisualStudio sets the standard with class inspection windows showing details of all properties and methods. However, a simple list of method/function names in alphabetical or source order can be just as useful. Bonus points for any editor which handles the multiple types of function declaration in JavaScript!

Good font support
In general, I prefer to code using a proportional font. I may be in the minority, but please don’t force me to use monospace! SciTE offers the best solution; you can switch between monospaced and proportional fonts using Ctrl+F11.

Shortcuts, plugins, and macros
If you use particular keyboard combinations or functionality, configurable shortcuts, macros and plugins can help you migrate to another editor.

And the Bad Features…

Sometimes, editors offer dubious functionality that you really do not need.

WYSIWYG design view
Whilst WYSIWYG can be useful for novice developers, you will soon discover that hand-coding HTML and CSS is quicker than any design package. It can also be essential if your application requires DOM manipulation. If a WYSIWYG view is provided, make sure it doesn’t refactor your carefully-crafted code when you accidentally hit the ‘design’ button.

Obtrusive project management
Sometimes, you just need to open a file and make a minor change — please don’t force us to create a new project!

Dumb HTML-generation tools
I do not need a toolbar icon that uses valuable screen estate and inserts a <p> tag. And I certainly don’t need icons that insist on adding deprecated <b> tags!

What are the essential features you look for in a code editor? Are there any “features” that particularly annoy you?

Free book: Jump Start HTML5 Basics

Grab a free copy of one our latest ebooks! Packed with hints and tips on HTML5's most powerful new features.

  • Mike T.

    Great post.

    Actually, <b> isn’t deprecated in HTML4, or even HTML5.
    See here for a list of all elements in HTML4, even the deprecated ones: http://www.w3.org/TR/REC-html40/index/elements.html

  • Anonymous Howard

    <b> is not deprecated. SitePoint’s own link on your post — http://reference.sitepoint.com/html/b — says so.

    Quite the laundry list. So, have you eliminated any editors other than Eclipse and Notepad?

  • chrisrikli

    I use Visual Studio to develop PHP based applications using Drupal as a framework. I’ve found the VS.PHP plugin to be the best $100 I’ve ever spent. It is awesome:
    http://www.jcxsoftware.com/vs.php

    (I don’t work for them or anything, it’s just a great product.)

  • Kenneth

    A good programmers editor must include good support extensive and customizable keyboard shortcuts. I know you mentioned this in the article, but I’d move it to the top of the list. Reducing your dependency on the mouse will increase your productivity and reduce the repetitive stress injuries to your body.

    The best programmers I’ve worked with use Emacs or Vim. Pick one. Learn it well.

  • Molte

    Multi-selection and some kind of automatic indention should certainly be added to the list.

  • http://www.brothercake.com/ brothercake

    I’d add auto-complete to the list of bad features – totally does my head in.

  • zoliky

    A good programming editor: TextMate

  • http://aarontgrogg.com/ aarontgrogg

    Funny, this has been a really hot topic for me lately, I was really looking forward to getting to the end of your Features lists and seeing which IDEs did/didn’t do what, and which would be the best for me… sadly, the article didn’t end that way… :-(

    So, here are my three-cents:
    1. I use Dreamweaver at work (because they were nice enough to have already bought and installed it for me). I tried Komodo there for some time, but found it literally sucked my PC’s resources into the ground, twice just rebooting the machine, in mid-line of coding… I actually like everything about DW just fine, except for its HORRID “Configurable color-coding” (which is something Komodo does REALLY well) and it’s lack of… “tab-markers” (not sure what they’re actually called, but in Komodo, there are faint vertical lines for each tab in my mark-up, helping me to “connect” opening and closing tags).

    2. I continue to use Komodo at home, because I don’t want to foot the bill for DW, I just have to be careful about how many other apps I have open at the same time. My biggest complaint about Komodo is its limited customizable keyboard shortcuts… In DW, I created two that I use all the time: Ctrl+Alt+Shift+S = Save All, and Ctrl+Alt+Shift+A = Close All.

    3. I used to use Visual Studio and felt it did an okay job, but didn’t really offer anything that the above two don’t, and it doesn’t have several things that I love so much about the above two.

    4. And then there’s always Notepad… :-)

    Ciao,
    Atg

  • http://aarontgrogg.com/ aarontgrogg

    Oh, two more Features:

    1) Have a PC-version AND a Mac-version… Not everyone works on the same environment all the time, and it sucks to have to switch back and forth.

    2) Be able to export settings, so I can synch IDEs on multiple machines.

    K, nuff,
    Atg

  • Jase

    I use EditPlus! Its got everything I need. Syntax highlighting, line and column numbers, ftp support, bookmarks, excellent search and replace functions including regex and tons more :)

  • Mandell

    I have to agree with aarontgrogg, I was hoping for something a little different in this article.

    That said, I have yet to find any editor for Linux (my preferred environment) better than Vim (with Terminator and Screen) for productivity. From all I’ve seen, Textmate on the Mac and … I can’t remember my choice for Windows – it’s been too long.:)

  • http://www.optimalworks.net/ Craig Buckler

    @aarontgrogg
    I didn’t want to list code editors because Sean did that recently.

    However, I recommend Notepad++ – it’s got everything I listed. SciTE is also great for quick and dirty editing.

    Eclipse and Aptana have some stunning features, but are just too resource-hungry for me. NetBeans looks good, although I’m yet to find line-wrapping!

  • wwb_99

    You forgot one key feature. IMHO the most important feature–source control integration. It’s what separates us from the apes.

  • Nic

    Awesome post. I agree with all the items.

  • http://www.blumentals.net/ karlis

    Very good article not only for users but also for software developers. From the software developer’s viewpoint the most difficult part is to include as many features as possible while keeping the product simple, fast and lightweight. More features an editor has, slower it gets. And what is more – different developers have differnet requirements. It is a real challenge. I do not believe that one uber-editor exists, I think it is more what works best for YOU.

    Then again, being both web developer and software developer I am trying to develop the perfect web programmers editor (it is called WeBuilder) that would combine the most useful set of features and good speed. IMHO it is all about balance. Not an easy task – we’ve got zillion feature requests and it is difficult to filter out ones to be implemented.

  • p.vernooij

    I’m missing version control in the list of absolutely required features…!

    Btw: TextMate

  • p.vernooij

    oops, wwb_99 mentioned source control already…

  • http://www.blumentals.net/ karlis

    I know a lot of developers that use SVN for version control (and TortoiseSVN for integrating it with Windows shell – IF you use Windows). I think it is a reasonable solution.

  • guruguy

    I have recently been doing a lot more work in PHP, so I set out to find an IDE that could provide an easy solution. PHPED from nusphere.com has been great, automatically formatting your code to make it easily readable and interpreted. There is also a fully customizable workspace and easy to use tools such as a remote debugging addition. I don’t know if this stuff is standard for a PHP IDE, however it really impressed me after coming from Dreamweaver.

  • http://don.glasstowndesign.com Donniep

    Just to throw this out there I do php and sql work while my girlfriend does html css and javascript we both use Intype it is still in alpha but is very stable and a new version is coming very soon. It is alot like textmate but it works on windows and it is very light. I should mention that I do not want or need things like code completion or wysiwyg all I want is a fast really advanced text based editor and this has worked perfectly for me for well over a year.

  • http://www.bitsymphony.com Kailash Badu

    Ability to work with a number of character encoding enabling me to save a document in any encoding I desire. Ability to transliterate from once encoding to the other as flawlessly as possible. You know, there are times when you want to convert an UTF-8 document into ISO-8859-1.

  • justbn_me

    Everyone should really consider Aptana again. The new Andretti Alpha #2 (NOT # 3) is amazing. It’s fast as all get out. It does not hog resources anymore. I must say I’m very impressed.

    I also had Komodo IDE. It’s a pretty good bet on a PC. However, I was constantly bogged down by it on a Mac. I then spent forever trying every IDE I could think of. Aptana wins hands down.

  • Pingback: links for 2009-07-03 | burningCat

  • http://www.optimalworks.net/ Craig Buckler

    Thanks for the comments.

    @Mike T.
    OK – <b> isn’t deprecated in HTML, although I tend to use XHTML. I’d still argue that <strong> is a better choice than <b> but, either way, it’s totally unnecessary to provide a toolbar icon (ironically, I use a Ctrl+B shortcut!)

    @brothercase
    Perhaps I should have added obtrusive auto-complete to the list of bad features? There are some truly awful implementations that either stop you typing or require finger-wrenching keyboard combinations to select or cancel!

    @wwb_99
    I almost put source control in the list of bad features. The reason – some editors force you to work in a particular way or use their own source control terminology. The Eclipse SVN widget totally confused me at first, but many people like it.

    I’m not convinced source control is a killer feature because it’s easy to handle outside of the editor. I use SVN and Tortoise, so it really doesn’t matter which editor I use.

    FTP is similar. Many editors support FTP, but they rarely offer anything better than a standalone FTP application.

    @Kailash Badu
    Good point about character encoding. Handling Windows, Mac and Unix EOL markers is also important (and a good reason to drop Windows Notepad!)

  • Anonymous

    How about code snippets and custom code auto completetion, I use Coda and both of these features are handled beautifully, not to mention its in built terminal, ftp and version control. Its find and replace is awesome too – that would be on my list!

  • http://www.cemerson.co.uk Stormrider

    I’d still argue that <strong> is a better choice than <b>

    One of my pet hates: People who think that ‘strong’ replaces ‘b’.

    Just because strong happens to have the same style as b in most browsers, doesn’t mean it is a replacement. If you mean ‘strong emphasis’, use strong. If you mean ‘bold’, use b.

    DO NOT just wholesale replace one with the other, that is completely misunderstanding the semantics of it!

    Same goes for em/i obviously!

  • http://befused.com franzdavid

    Good to see Karlis from Bluementals Software commenting here. I use Webuilder every day and love it. I have used quite a few different editors, including Dreamweaver, Eclipse, Zend Studio and Aptana and I always go back to Webuilder. It has the features I need without any bloat, is very fast and best of all, very intuitive. Not to mention it is excellent for PHP, HTML and CSS (the best CSS editor I have used by some margin) And no I don’t work for them!

  • whyulil

    something really useful is the execute keys in context. It captures the console output so you dont have to mess around with the command line, you just set up your commands, put in the flags and hit F9-12 and they change depending on the file type so xslt / xml files can go straight to saxon, c# / vb.net can go to their respective compilers and that rocks!

  • whyulil

    has anybody said anything about regex search and replace? but the best find and replace is in dreamweaver. Ive never seen another program make it so easy to modify entire sites of HTML. taking 500k of word export and getting it down to less than 90k of HTML in 3 clicks is quite satisfying.

  • http://www.sitepoint.com/ mmj

    OK – <b> isn’t deprecated in HTML, although I tend to use XHTML.

    Well, <b> is deprecated in neither HTML nor XHTML, so there is no difference there. Both it and <strong> remain (as of current strict versions), and they have different meanings. For example, <b> has a typographical meaning – ie “bold text”; <strong> strongly emphasises a point, having no defined typographical meaning, and being equally valid for screen-based and aural representations of the content. The fact that browsers choose to display <strong> text as bold on-screen only affects its visual rendering ie the way the browser makes it look; the underlying meaning of the markup – the semantics – between them are still different. That is, the semantics don’t need to correspond uniquely to a particular on-screen representation.

    Whether you think a typographical instruction like <b> should be included in HTML/XHTML as markup is another matter, and it depends on whether you feel a typographical instruction should be classified as “presentational” or as part of the meaning of the content (I lean toward the latter, and therefore feel that <b> does have its place in markup).

  • Aleksandar Jovanović

    FTP Client within an editor is also very desirable feature, sometimes you just need to edit this file directly on a server with no hassle of downloading and re uploading. Option for storing your code snippets, and better clipboard is also very useful.

  • http://www.optimalworks.net/ Craig Buckler

    Wish I’d never mentioned the whole <b>/<strong> thing now … it’s gone a little off topic! For the record, use whichever is appropriate (unless you happen to be using XHTML2.0 in it’s current unfinished state!)

    <strong> would possibly be more useful in most cases – if only because it’s longer to type. But my main point is that neither <b> or <strong> require a toolbar icon!

    @whyulil
    Good point about regex search and replace.

    @Aleksandar Jovanović
    FTP facilities that auto-download, edit, then auto-upload files can be useful … if a little risky.

  • http://fvsch.com Florent V.

    Ok, here are some features i like or need:

    Cross-platform. I mostly work on Linux and OS X, and happen to work on Windows occasionnaly. I could use a distinct code editor in each operating system, but it’s quite nice and obviously easier if i can use the same tool on each system. IDEs that provide this? The java-based ones (Eclipse, Aptana, Netbeans), and Komodo. In my experience Komodo does a better job of OS integration (though it’s not perfect).
    Open over FTP/SSH. Some IDEs embed a FTP client; i’m not sure i like that, i’m usually content enough with a standalone FTP client or (better yet) FTP/SCP integration in Gnome (on Linux). But sometimes it’s useful to be able to open a remote file in the code editor, so that kind of FTP/SSH integration in editors is nice. Obviously, some developers will not need that feature at all since it’s not part of their workflow.

  • frost

    Being a front end developer, i found using Textmate to be the best. I have used everything from Dreamweaver, Komodo, Aptana, e-text-editor notepad ++ vim… and nothing compares to Textmate, the only editor you should use for Django templating. It is awesome with jQuery, CSS and HTML.

  • fusioned

    Funnily enough, I use a combination of both Eclipse (it’s fine once it’s opened, it stays opened) and Notepad++. I use the latter for misc. stuff, quick edits and as a temporary paste-edit pad. I’ve not found Eclipse to be too much of a hog on my system, even with 50-100 files open, and for PHP development with the PHP plugin, it’s perfect for my needs. YMMV of course.

  • http://www.charlesbryant.co.uk gap_tooth_clan

    WYSIWYG design view in Dreamweaver is certainly not an undesirable feature. I started off as a HTML CSS coder but have got firmly into PHP. I have never used the design view as an actual tool for creating my markup, but it acts as a fantastic quick way to find different parts of your code. Just click on the design and my code is also looking at the same point.

    I would imagine without this feature I would lose about 10% efficiency on coding HTML documents, especially when it comes to making updates.

  • http://www.andrew-brundle.com andrew-bkk

    I only ever use Scintilla, or Scite. It’s perfect except that it doesn’t seem to support text outdenting.

    I hate all these editors that come bundled with millions of worthless features.

  • http://www.uziana.com shigamoto

    I love Dreamweaver and used to use it. But lately I have cheaped out and use Aptana. The funny thing is that in many cases the growth of CMS:es has rendered programs like Dreamweaver and Aptana pretty useless for daily operations. Notepad ++ is also a neat app I use when coding and what not.

  • Anonymous

    +1 for notepad++
    it uses all of the must haves.
    most of the wants.
    and none of the baddies.

  • Anm8tR

    I use Komodo on a Mac and it works great but you do have to watch the memory. Dreamweaver gets a little bit a bad rap as a newbie tool. Granted it rewrites your code, and that does make it undesirable for DOM scripting. But two things DW does best:

    As previously mentioned, search and replace is still better than anything I’ve seen; and I’m constantly told to try Grep or Super Grep or Uber Grep or something.

    Inserting HTML content. Example: I get a Word Doc of a job post for Club AJAX – I tried getting that Word Doc into HTML in various ways, but DW wins out. Copy, paste, click a few format buttons. Close DW, and go back to coding in Komodo :)

  • uni_boy

    This is interesting to me because I like to hear how other developers do what they do.

    I still use Dreamweaver, because it has all the features I need and works seamlessly with Drupal. I use the built-in FTP all the time. It has all the “must-have” features listed above, and has a great Drupal plugin in that adds native support for Drupal extensions and API.

    I also like its CSS management and its seamless Fireworks/Flash integration. There’s a lot of benefits to its being an Adobe product.

    I just feel like with Dreamweaver, I have to click less. The only disadvantage I can see is carrying the indignity of using a fairly ‘uncool’ code editor. I try to do so gracefully.

    I’ve looked at Eclipse just briefly, I guess mostly in the context of Flex Builder. It seems great, but overkill for what I need as a PHP/MySQL developer. Similarly for Kimodo, which is still sitting on my desktop, more or less unused.

  • justbn_me

    Built in FTP/SFTP : No thanks. I love Aptana but find the built in SFTP (pro only) useless. It’s just too slow. The views aren’t customizable, etc. Unfortunately, Aptana also doesn’t play well with external SFTP/FTP clients. Argh.

    However, I have the best solution. Use ExpanDrive. It’s an awesome SFTP service that mounts as a local drive. Now, you can open all your remote files in Aptana or even use them as part of a project.

    I’d prefer that Aptana concentrate less on built-in features and just have a rock solid IDE. Let us use our own preferred tools for source control (git) and file management.

  • http://www.wonnengut.info/ moormaRog

    Many thanks for support how I can thank you?

  • http://www.optimalworks.net/ Craig Buckler

    @justbn_me
    I agree – most built-in S/FTP solutions are quite poor. Notepad++ FTP-Synchronize plugin works well, but that’s because it allows you to open remote files as if they were local. It’s handy for quick and dirty emergency updates.

    ExpanDrive looks interesting. A couple of other (untested) solutions:
    Web-Host-Uploader and Rightload.

    Perhaps the easiest and quickest solution is to update via SVN (or whichever source control system you’re using). Unfortunately, not all ISPs offer the SVN client on their systems.

  • elemental70

    I always vote for Aptana. Everything you could need, always updated and FREE. http://www.aptana.com

  • Anonymous

    Netbeans for PHP has made me happy!! Otherwise I would say Visual Studio for ASP.NET is the best editor around. Even the Visual Web Developer edition is a good editor. A lot better than the Dreamweaver crap.. I don’t know what you’re really going to do with Dreamweaver – it’s more too people who hardly can’t HTML. The javascript autocomplete support is not good, but the JS support in VS is a lot better.

  • rozner

    I’m a big fan of Eclipse, use it for Java and PHP development. For me the most important things are keyboard shortcuts and the auto complete. The Java autocomplete with Eclipse is perfect, and it has customizable keyboard shortcuts. For PHP I’ve used both PHP Eclipse and the PDT plugin. I find the PDT plugin has better autocomplete but the interface in general is slower than PHP Eclipse.

    My only problem with Eclipse is that it sucks for single file editing, as you do need to create a whole project just for that. So if I need to edit just one file or make a quick change I use Editplus. It’s got syntax highlighted, also has an integrated FTP client (which has been helpful before although I don’t use it much anymore).

    I’ve used Visual Studio as well for some .NET projects and I’m not complaining, it’s a pretty solid IDE, the intellisense works quite well.

  • Dougydoe

    Very insightful article. I’ve used Visual Studio and I think its the way to go for .NET development. I also use Dreamweaver for My FrontEnd Development

    I’m relatively new to PHP so I’ve used Dreamweaver again for a while. I have recently been trying out Netbeans for PHP development and looks good.

    Anyone aware of the ideal PHP editor out there? I mean the Freeware ones.

    Thanks

  • Oscar

    If you’re PHP coder, so NetBeans IDE will be your choice.

  • Dorsey

    I switched from jEdit to NetBeans 6.5 about six months ago, and haven’t looked back. For all the VS-lovers out there: no, it’s not as sophisticated, but it offers a lot of bank for the buck (and the bucks are zero, because it’s free). What I really like is that I don’t have to use all the features or all of the supported languages, but they’re there when I need them.

  • glenn

    Eclipse can load just as fast as any other IDE. The secret is to have multiple instances of Eclipse loaded with the right configuration of plugins. Too many plugins in any single instance of Eclipse causes it to load slowly. See http://www.dynamicalsoftware.com/intro/plugins/eclipse for more advise on using Eclipse.