|
BEST TEXT EDITOR
There are some very good text editors available today, both commercial and freeware. If you don't use a text editor very much, it probably doesn't matter much which one you use, as long as it's not notepad. However, if you are one of those people that is constantly working inside a text editor, then you may care enough to want the very best. And in this case, the very best is UltraEdit, the winner of our Best Text Editor Award.
UltraEdit is a shareware program, and costs $40 (as of 4/23/05), which is a substantial price to pay for a text editor given all of its competition. But the price is not altogether unreasonable given the depth and breadth of the program. A full featured 30 day trial version is available for download here (non-english versions also available).
After some recent fixes, we are happy to give PSPad our award for best Freeware text editor - PSPad is amazingly powerful and versatile, with an active international user forum. Before you buy a text editor, you owe it to yourself to try out the freeware PSPad. Just make sure to grab the latest beta version which has working wordwrap code!
|
WHAT MAKES A GOOD TEXT EDITOR?
A text editor should be lean and mean, and fast to start up and shut down.
This is not a program for pretty splash screens or sounds and colorful buttons and animations. People who use text editors tend to use them all the time, not just for editing files, but for simply opening them up to take a quick look. A good text editor needs to be reliable, take up very little desktop space, and essentially stay out of the way of the user.
95% of the time you'll be using features that are found in all text editors: simple editing, copy&paste, spellcheck, etc. It's the other 5% of the features (as well as the gui differences) that separate the pro editors from the amateurs; features like column and hex editing modes and text formatting options. It's on this 5% that we will focus for the remainder of this review.
For our tastes, UltraEdit captures the spirit of minimalism that we like to see in a workhorse program like a text editor. The current trend in programming is to move towards these hi-color large-icon xp/mac style user interfaces, which we find distracting and a waste of screen real estate. UltraEdit provides a deceptively simple user interface, with a customizable set of low-key, low-color icons that do an excellent job of depicting their function. It's easy to configure UltraEdit to display a very minimal interface with just the menubar, some buttons, and your editing window. If you're the kind of person who will miss having flashy color glowing icons then UltraEdit is not going to be a good match for you. At least not in this version. Needless to say, the program does not support skins, thank goodness.
Unlimited Undos - UltraEdit supports the increasingly common ability to undo an unlimited number of changes, including undoing past save points, which is extremely important; if your text editor doesn't support this, dump it and get another.
Speed - Back in 1980 I used to go have dinner while waiting for the c compiler to finish. There's really no excuse anymore for programs taking a long time to load. If you're Adobe you may be able to get away with this kind of stuff (Adobe Photoshop may be the slowest starting non-java app on the planet). Text Editors need to start up fast, and almost all do. UltraEdit is no exception. UltraEdit may take a little longer than notepad to open, but not terribly so.
Column Mode - This may be our favorite feature of UltraEdit that is missing in most text editors. You won't be using column mode often, but when you need it, it will save your sanity. Normally you select text in a text editor by dragging to select contiguous characters. Column mode let's you select and manipulate (copy, paste, delete, move, insert) rectangular blocks of text. This can be invaluable if you're dealing with a text file that has some embedded tabular info in it, or if you need to remove leading or trailing columns of text, which can happen fairly frequently. UltraEdit's column mode implementation is a joy to use, and works intuitively just like most of the other features in UltraEdit. Most text editors do not have column mode support. See screenshot here.
Great Tab Implementation and a Clean User Interface - If your text editor does not support multiple document editing using tabs, dump it immediately. UltraEdit allows you to have multiple documents open at the same time, using tabs to switch between windows, as well as the standard Tile Horizontal and Tile Vertical modes.
It's the small details of the tabbed implementation that make it a pleasure to use. You can double click on a tab to close it, and modified tabs have a little '*' next to them so you can quickly see which documents still await saving. You can also right click on a tab to bring up a context menu for working with the tab. You can even drag tabs around to re-order them, and dock the tab bar on the top or bottom of the screen.
You can also enable docked windows showing a file list for the current directory, project, or file system, which some people find very useful. Windows for templates and macros are also available, and it's easy to open and close these lists. See screenshot here.
Find/Replace in Text and in Files - We really like the Find/Replace implementation in UltraEdit. You'll find nice options for simple and regular expression searches, which is very nice since most of the time regular expressions are overkill and it's nice to be able to use simple checkboxes for case sensitivity, whole words, etc., while still being able to fall back on regular expressions where necessary.
UltraEdit has great support for doing find+replace operations across multiple files (open files, files in a directory, or files in a predefined project). UltraEdit displays find results in a separate panel that appears on the bottom of the main window, where you can easily view results and double-click to jump to the file/line. This is orders of magnitude preferable to using a separate result window, and mirrors the way modern docking-panel IDE's work, except that it has the added benefit of creating this little panel automatically when needed. Just perfect. See screenshot here.
Wrapping, Tabbing, Indenting, Formatting, Converting - Some people like to use spaces to indent, some people prefer tabs. UltraEdit handles both equally well, and has nice functions for converting between them, and adding and removing indents. UltraEdit has a great feature where you can select a block of multiple lines and hit tab to have the entire block indent.
UltraEdit also has great support for various word wrapping options. Obviously you can toggle between the display of text in word-wrap mode (where lines wrap around at the edge of the window), and non-word-wrap mode, where lines scroll off indefinitely until a carriage return character. All non-trivial text editors support that. What UltraEdit also provides is some extra functionality for adding and removing carriage returns in files in order to effect the actual alignment of text in the file.
You'll also find a host of menu items for miscellaneous functions like changing the case of text (sentence, lowercase, uppercase), removing trailing spaces and duplicate lines, and a variety of very nice sorting options. These are not features unique to UltraEdit, but they are handled well.
File Support - UltraEdit supports giant files, can load and manipulate them quickly, and can automatically detect and treat appropriately unix, dos, unicode, utf files.
Hex Mode - There are some very good stand alone hex editors, which are designed to view and modify the contents of arbitrary (non-text) files. A hex editor is fundamentally different from a text editor, and there are very few times when you would want to edit a text file in a hex editor or a non-text file in a text editor. There is no program that is great at both text and hex editing, but UltraEdit may come closest to providing true hex editing inside a text editor. What's nice is the ability to quickly view the hex representation of a file. This basically just means being able to see the ascii bytecode representation of a file. This can be important when, for example, you want to know the ascii code for some unprintable character in your file, or helping you figure out what happened if a file you think should be a text file really contains some strange characters.
Detecting Changed Files - This feature, which is becoming more and more common in editors, let's the editor detect when a loaded file is modified outside of the editor, and prompt the user about whether the current loaded buffer should be reloaded to match the changes, or left alone.
User Tools - Although the interface for managing external user tools is somewhat clunky (see next section), UltraEdit is quite powerful when it comes to initiating a custom 3rd party program and capturing its output. Output can be displayed in the same docked (auto-created) output panel that we described above in the find/search section, which also provided the same click to load and goto file found in the search output. It's a great way to work with a 3rd party tool, and has some nice options for how to handle results, like replacing selected text, etc. UltraEdit is one of the most flexible editors in terms implementing a variety of techniques for working with different kinds of tools. See screenshot here.
Macros / Scripting - Most editors support macros of some sort. Overall We aren't too thrilled with the macro scripting language and interface provided by UltraEdit (see below), but that doesn't change the fact that for most simple common tasks, UltraEdit's macro support will be fine and is better than that found in most text editors. It can easily record your actions as you perform them in order to build a macro that you can later customize, and let you manually write scripts using a simple helper dialog - a feature that non-programmers will greatly appreciate.
Projects - UltraEdit let's you easily define Projects, which are collections of files that you can work with as a group. Projects are useful when you want to open all the files in a group, or perform search and replace operations within all files in a group.
Templates - You can define templates, text blocks with fields to be filled in, which can be easily inserted into text files as you're editing them.
Bracket matching and Syntax Highlighting - Most powerful text editors have some degree of support for editing source code files for programming languages and html files, can guess the type of file you're editing, and apply the proper highlighting for the file type, so that reserved keywords are colored differently from string and numeric constants, etc. Like most such editors, UltraEdit supports external syntax highlighting definition files, and you can find user-created highlighting files for more exotic languages. UltraEdit also does a nice job of bracket matching which can be very useful in finding bracket mismatch errors when coding. See screenshot here.
Code Folding - New to UltraEdit V11 is what's know as code folding. This is where blocks of program code or html code marked by a start and end marker can be collapsed into a single line with a little [+] sign to let you expand or collapse it. Menu items can collapse or expand all blocks. Code folding can take a while to get used to but once mastered it allows you to view large files in a hierarchical fashion, drilling down to look at detail when necessary. See screenshot here.
Custom Hotkeys and Menus - Some people love to customize the menus, buttons, and keyboard hotkeys used by their favorite programs. Our general view is that Menus should not be customizable. Not to pick on Microsoft again, but Microsoft's Hiding Menu idea is the perfect example of a truly abominable idea that should have never found its way into production code. But while we think Menu's should not be changed, we feel different about button bars; it's useful to customize them to have your frequently used actions at your fingertips and hide commands you don't normally use. Menus should be complete and predictable; Button bars should be customized to show your most frequently used actions. We don't ourselves use hotkeys very often, but hotkey fanatics will appreciate the ability to completely customize the hotkeys used by the program.
Spell Check Options - You'll find a very nice set of options for configuring the spell check functionality in UltraEdit, including a nice view of all custom words you've added, and an ability to switch between dictionaries.
Show Hidden Characters - Once upon a time word processors like XyWrite and WordPerfect implemented a wonderful feature called Show Hidden Codes, where the program displayed to you (and let you edit) the internal characters inserted into the text and used by the program to help adjust layout. Naturally Microsoft decided to avoid such a feature in Word, which might have something to do with the insanely out of control formatting mysteries that often occur for no apparent reason when editing files in Microsoft Word. UltraEdit has a nice "show spaces/tabs" feature which shows you spaces, tabs, and CRs. Again this is not a feature unique to UltraEdit.
Little Details and Big Features - There are lot's of little details in UltraEdit that make it one of the most intuitive editors we've tried; as an example we really like the ability to click in the margin to the left of a line to select the entire line. UltraEdit also has some advanced features that we haven't used much, like the ability to remotely edit files from an ftp server, which we've seen in other editors as well. Frankly we try to avoid these kinds of features and prefer to deal with saving and uploading files ourselves, but it might save you some time if it's something you do regularly.
STILL ROOM FOR IMPROVEMENT
Kludgey Macro/Scripting Language
Infinite Horizontal Scrollbar
We looked at a lot of text editors for this review, and the side bar on the left has links to many of them. Here we describe the most full-featured text editors we tried, with representative screenshots. All of the programs below were benchmarked to determine start up time, and time required to load a 40mb text file, on an AMD64 with 1gb of ram. However, all programs, except where specifically noted, were able to start and load files within a second of each other, and given the idiosyncrasies inherent in cache, disk use, etc., our conclusion is that on a fast machine you are unlikely to care about the differences in speed.
Zeus $35 (great price for a serious programmer's editor)
Column mode: No.
Hex mode: No.
Searching: Regex, ok multi-file search/replace.
Undo: Yes, past save points.
Macros and Scripting: Only recorded playback of keystrokes.
User Tools: n/a
Code Folding: Yes (!)
Column mode: Yes.
Hex mode: Yes.
Searching: Regex; bad multi-file support.
Undo: Not past save point.
Macros and Scripting: n/a.
User Tools: Yes, good support.
Code Folding: No.
SciTe (open source; cross platform)
Column mode: Yes (hold alt).
Hex mode: No.
Searching: confusing regex, ok multi-file
Undo: Yes, past save point.
Macros and Scripting: n/a
User Tools: n/a
Code Folding: Yes.
Vim (open source; cross platform)
Column mode: Too hard to figure out.
Hex mode: Too hard to figure out.
Searching: poor or too hard to figure out.
Undo: Too hard to figure out..
Macros and Scripting: custom vimscript
User Tools: couldn't figure out.
Code Folding: No. Probably. or too hard to figure out.
Some people swear by these very hardcore keyboard-based (unix-legacy) editors, and to be fair, the underlying engine in vim is very powerful. But in our view, some modern advances in gui design do in fact improve efficiency and usability. And programs like vim are sort of frankenstein monsters; they have a visual gui interface with menus, but half of the functions are missing, and the help system feels like its from 1965. It just doesn't feel right.
Column mode: No.
Hex mode: No.
Searching: Regex; ok multi-file support.
Undo: Not past save point.
Macros and Scripting: simple recording.
User Tools:n/a.
Code Folding: No.
PSPad (freeware, accepting donations)
Column mode: Yes (hard to find; hold alt key).
Hex mode: Yes.
Searching: Regex; good multi-file support.
Undo: Yes, past save point.
Macros and Scripting: simple record and playback plus some custom commands.
User Tools: only one tool per file type (unfortunate)
Code Folding: No.
Ftp editing. Clip libraries. Auto Completion. Project management. Multilingual. Good hotkey customization and system integration options. Some nice programmer code exploration views, and auto-completion. Draggable columns. Somewhat distracting fonts. Spellcheck dictionary not installed by default (annoying). Non-standard font used in gui dialogs (not good). More screenshots can be found here.



We are believers that you should use the right tool for the right job. In the same way that we don't think you should be using notepad to edit your non-trivial text files, we think you probably shouldn't be using a general purpose text editor to do serious coding or html design. So while UltraEdit and many of the alternatives described above have some nice support for editing and even coordinating with compilation tools and browsers, and indeed a text editor can be very useful for making quick changes, we think if you are doing serious editing of source code or html, that you should look elsewhere. For a tool designed for that task. For programming, this means a proper IDE or programmer's editor like SlickEdit, which is expensive but more suited to compiler integration. For html, this means one of the many html editors like Dreamweaver or Homesite.
It's also worth mentioning that IDM, the makers of UltraEdit, are due to release a brand new combination editor and generic IDE tool called UltraEdit Studio.
For all of our friends who insist that notepad is l33t and who refuse to write html in anything but notepad. For the love of god stop.
There are several strong contenders for the throne of Best Text Editor, but at the end of the day, UltraEdit comes out on top.
When looking for a text editor, you should insist on column editing and hex editing modes, which immediately eliminates almost every text editor we've looked at. Of all the editors we looked at, UltraEdit has the best implementation of these advanced features.
In the end, the Best Text Editor award goes to UltraEdit, for combining great stability, a clean user interface, a top-notch implementation of basic functionality, and excellent implementation of some important extra functionality not found in other editors (like hex and column modes).
The only aspect of UltraEdit we were really disappointed in was the kludgey, inconsistent, homemade macro/scripting support system. These homemade macro/scripting languages are like diseases - they often sneak into programs surreptitiously as minor features, and soon grow into a epidemic of kludgey, inconsistent hacks that dare not be removed for fear of breaking backward compatibility. The modern approach to providing scripting interfaces is now to expose an API to a respected scripting language like Python, Lua, Javascript, VBScript, or Perl, which is a very welcome trend; we can only hope that UltraEdit will eventually make the move to such a system. Until then, you can still accomplish most of the macro/scripting functionality you would want to do, using a combination of the built-in system and external tools, you just might have to hold your nose while scripting it. And the truth is, we didn't find a better alternative to the UltraEdit approach in any of the other text editors we looked at.