I have been on a quest for a text editor I can fall in love with. If you Google on this topic, you will find many blog post just like this one. Programmers like myself, trying to find the perfect tool. It is frustrating - the perfect editor for me doesn't really exist.
My colleagues at work all use Emacs. Their fingers have those awful key combinations build into them, and they are super productive and wicked fast. I want to be wicked fast too. I have just had another bout of trying to learn Emacs, but I don't think it is for me.
I have tried over and over to learn it. I plunked down for the 3rd edition of Learning GNU Emacs, and started to read it again recently. But I'm giving up. My fingers are not that agile, and my brain rebels against learning all those multi key combinations. I want well though out keyboard shortcuts, but the layout of Emacs is just stupid. I do want a command to convert to uppercase sometimes, but that should be tucked nicely away in a menu, not Meta-u. Emacs was pre-clipboard, and whole yank thing just bothers me. Cut is Control-x, thank you very much. That much my fingers do know.
I used Codewright for a long time, and I quite liked version 5.2. Version 6.X was really buggy and I stopped using it. (For that matter, it has been discontinued, and sent to the graveyard of dead Borland products.) I just used the Visual Studio IDE after that. But we have linux boxes at work, and I'd really like to be cross platform.
My wish list:
- Cross platform (windows, linux, and bonus points for Mac)
- Non-ugly. I look at this for 8 hours a day, so it needs to be elegant.
- Well thought out interface, not requiring lots of complicated key combinations.
- Support for C++, Python, R, and Ruby.
- Able to search in all open files
- An open file pane. That is have the names of the files in a nice alphabetical list at the side of the screen. I don't really like file tabs, since they stop working well once you have lots of files open.
- Some sort of tags support for symbols
- Ability to compile a project, and suck out the errors that result
- Fast, and able to open lots of big files.
- A console window that lets you run shell commands
- Stable, with a nice active community or "ecosystem"
I don't think there anything on the market that fits all my wish list.
If I could just use a Mac all day, I'd have BBedit or TextMate. Oh how I'd like to use TextMate. But unfortunately it is Windows boxes and Linux clusters for me.
Emacs and vim dominate the linux market, but they involve overly complicated key combinations. I know you can be very productive with them, but can't seem to get my fingers to that level.
There are a number of nice windows only editors that do pretty well on my list. I have to put in a plug for Boxer, which I use every day as a supplement to Visual Studio. It has a nice clean interface, is fast and works on big files. It doesn't do tags or external compilation, or have an open file pane. If you're reading this and looking at editors, give it a look.
I looked at EditPad Pro since was ported to linux and windows. It is pretty good. However, it uses Kylix for cross platform support, and that's also in that Borland Graveyard.
What is left? SciTE gets a lot of good buzz. It is cross platform and really fast. It does very nice code folding, which also does these useful dotted lines at indent levels. However, I was kind of surprised at how "lightweight" it really is. Want to convert to uppercase - sorry. I started to use it for a few days, but it can't do a search across all open files. That's something I really need to do. Looking at their development lists, the main author is opposed to adding it. He thinks a disk based "search in all file" command is a replacement, which it is totally not.
I tried out SlickEdit, and still may give it another go. It is cross platform (although the Motif interface is looking kind of old/ugly). It does all the IDE stuff like tags and external compilation. It is fast. It is, however, very expensive. A windows/linux "named user" license that would let me put it on all the computers I use is ~$400. Damn. I don't mind spending money on software, but that's way more than typical. Also, the interface is kind of cluttered. I found myself fiddling with it rather than doing work. [UPDATE: I've added a much more detailed look at SlickEdit here.]
I was kind of bummed at this point because I didn't think there was anything left. In desperation, I looked at Jedit. I discounted it at first because I really don't like Java. Java gets used to make programs that do things I find very boring. I assumed that any editor starting with the letter "j" would suck. However, it is really a nicely designed program. It is very elegant, and has some handy plugs-ins. The console and error list work really well with our home-grown build system. The only thing it doesn't do on my list is work well with large files. It uses almost 3X memory for a file, and you have to allocate the maximum memory up front (since it is a Java program). I give it 96MB of memory, which is just silly, and I still can't open 4 10MB files at once. Otherwise I give it very high marks. It has a huge "ecosystem" like Emacs does. That's nice because it means that someone has already done the syntax highlighting for R, a pretty obscure language I use. (They call it S+, if you're wondering where it is hiding.)
So for now, I'm giving Jedit a tryout. I'll use Boxer for my large files on windows, and probably SciTE on linux.
Anyone out there have any suggestions for something I missed?
I read your posting, "In search of the perfect editor", with great interest. As the Director of Development at SlickEdit, I'm always looking for feedback on our products and why people choose an editor.
Our philosophy at SlickEdit is that the editor is the tool a programmer will spend the most time using. Only your programming talent will make a bigger impact on your productivity, so it's important to get the best editor you can. SlickEdit will save you many keystrokes and provide you with the key information you need to get your code right the first time.
You mentioned that our interface looks cluttered. We do pack a lot onto the screen, but we use tabs and other modern UI conventions to help organize it. Like an airplane cockpit, it is designed for use by experts who need a lot of information right at their fingertips. But unlike a cockpit you can customize it to meet your needs. Sure, you may spend a little time setting up the environment, but when you're finished you will be far more productive than on other tools.
At about $400 for a multiplatform license, SlickEdit is more expensive than many of our competitors. But you need to look at what you get for that money. None of the competitors you listed offer the full set of capabilities in SlickEdit. We provide everything on your wish list except for support for Ruby and R--and Ruby support is coming in v11. Check out our cool features list for some of the things that make us stand out: http://www.slickedit.com/content/view/353/217
How much should you spend on the main tool of your trade? SlickEdit is a professional editor for power programmers. It has the features you need to be the most productive and effective you can be as a programmer. When you consider how much you use an editor and how much time we can save you, you will recoup the purchase price in a very short amount of time.
I love talking to customers about their editing needs. Feel free to email me or call me at 919-473-0070 and ask for Scott.
Scott Westfall
Director, Software Development
SlickEdit Inc.
Posted by: Scott Westfall | January 16, 2006 at 03:35 PM
Hi Scott,
Thanks for your interest. I've added a post with more detailed comments on SlickEdit here:
http://gorithm.blogs.com/gorithm/2006/01/things_id_chang.html
Posted by: Craig Schmidt | January 18, 2006 at 10:17 AM
Hi,
I have also looked around a bit to find a text editor I feel comfortable with for doing different text editing jobs. I do a lot of LaTeX editing, and also programming (mainly C and scripting languages like Perl and Python). I have used BBEdit a lot (I'm running Mac OS X). I have used Emacs for several years, but I don't really like it. The fact that it cannot handle long lines with true soft wrapping is a real killer for me. I want to be able to write a paragraph in LaTeX as one long line. Emacs does not really allow me to do that. BBEdit has support for ctags, and I have found them to be very useful. That lead me to trying SlickEdit out. Recently, I actually bought a named licence, and I am finding new stuff all the time. I wrote a small slick-C script that makes SlickEdit LaTeX-aware. Due to the powerful tagging system, adding 10 lines of code gets me an outline functionality, reference completion across files, and folding of sections. That is two more functions that typically are not part of other editors.
I would advice you to try out SlickEdit again :) The tagging system makes you much more productive (at least for me). I hope they improve the Python support in version 11.
Posted by: Thomas Gustafsson | January 31, 2006 at 10:50 AM
have you tried Kate on Linux?
Posted by: Leo | July 25, 2006 at 11:15 PM
Leo,
I use a mixed platform of windows and linux machines, so I have to limit my choices to cross-platform editors.
Posted by: Craig Schmidt | July 27, 2006 at 09:16 AM
Hi,
I came across your blog and I can only vouch for SlickEdit. I know - its price is a real bummer, but I've never regretted paying it. I'm a person, who doesn't like to code stuff. I hate all this fiddling around with pointers, build scripts, type casts and all this ugly stuff. I'm more the kind of guy, who opens up his word processor, writes down a general concept and gives it to a student for the time consuming and unnerving realization. (I hope none of my students is reading this. *g*) Yet there are times, when I don't get around coding myself and really - working with SlickEdit actually lessens the "pain" a lot.
Example 1: When I wrote my first Python program, SlickEdit just asked me, where my Python is installed. I selected a path and after a few minutes of parsing from this point on I had all the IntelliSense/CodeCompletion-stuff that you know from Visual Studio "at my fingertips" - just for Python! I'd like to see Visual Studio do this...
Example 2: You won't find a refactoring tool for C++ in any other editor. There are of course (very costly!) PlugIns for Visual Studio and very buggy PlugIns for emacs, but none of them has really convinced me. Also the folks from Code::Blocks have refactoring capabilities on their roadmap, but it will be probably still quite a while until they even get started with it. (No offense - C::B is still a great project though. I recommend it to all my students.)
So if you want a general purpose editor with great C++ functionality, you won't get around SlickEdit. For Java, there is of course IntelliJ IDEA, which is really great, but they have this absolutly stupid license model and from what I've read in your post, you're not a Java-guy either. And for a really smooth LaTeX-coding experience, I'm still stuck with WinEdt, which is cheap and has rich LaTeX-specific functionality. But for everything else - SlickEdit is the tool of choice.
Posted by: Hans-Jörg Schulz | August 30, 2006 at 11:49 AM
Learning (x)emacs can indeed be hard at first. And it's true that that "ctrl-x" shortcut on emacs is completely broken. It simply makes no sense from a touch-typist point of view and it is basically impossible to do when you've got your ctrl key at the correct position (ie instead of that lame "caps lock" key).
That said you can easily change that: everything in emacs is customizable.
The editors I'm personally using? emacs and IntelliJ IDEA (in emacs mode, using a custom plugin... but even though it does kill/yank it's still just a very pale copy of emacs).
IntelliJ IDEA for everything related to Java, JavaScript, html and CSS. emacs for basically all the rest.
JEdit is a memory pig and a toy. A cute toy but still a toy: when you're using both emacs an IntelliJ IDEA there simply is no room for a piggish toy like JEdit.
Posted by: Jacque Marcon | April 28, 2007 at 11:28 AM
Take a look at http://geany.uvena.de/. Maybe it will be closer to your wish list than the others. I just noticed it while I was in the recent iteration of my "search for the perfect editor". I saw your blog in the same way.
Currently I use SciTE and really like it, except the lack of tagging system and file browsing/lising. I like xemacs too but with all features turned on it is very lazy, and it is not very friendly for integration with other external tools I use.
Geany feature list looks fine. Unfortunately in 10 minutes experiments it crashes 2 times, bit it is version 0.11 and I hope version 1.0 will be good enough to replace the Scite in my workflow. I hope it will work for you too.
Happy coding!
(and excuse me for my "non-native" english :)
Posted by: Emo | May 28, 2007 at 11:28 AM
I found jedit and java 1.6 to be quite good combination - after adding parameters extending amount of memory it can allocate, i'm happily churning on multiple files in 100MB range :) (be prepared to have 1-2G of ram, unfortunately).
One note though: they need to have not too long lines, jedit chokes when you feed it 1MB one-liner - thats only serious drawback of jedit in my experience,
everything else can be solved by some macro or plugin
Posted by: niktu | January 08, 2008 at 07:45 AM
Have you tried Notepad++? (http://notepad-plus.sourceforge.net/uk/site.htm)
It runs on the same edit component (scintilla) as SciTE.
If you took the time to test SciTE (which I consider hideous), you might want to test Notepad++ too.
If you do, and if it's not too much trouble, please let me know if you liked it or not and why!
Posted by: Robert | January 26, 2008 at 10:29 PM