I fell in love with SlickEdit a few years ago when I noticed itsads on our Web site. Although most companies use the sort of Web ads you'dexpect in the tech industry, I took a second look when LOLCat imagesappeared in the place of our regular ads. Admittedly, for a moment I thoughtperhaps we'd been hacked, but when I realized I was looking at aclever marketing campaign, I decided the folks at SlickEdit were okay inmy book. I recently had the chance to review SlickEdit, and althoughmy programming skills are fairly novice, SlickEdit made me feel rightat home.
SlickEdit is a text editor designed for programmers. Calling SlickEdita text editor, however, is much like calling the DeLorean from Backto the Future a daily driver. SlickEdit makes the line between textediting and full-blown IDE pretty fuzzy. It is available for nine platforms,and, thankfully, Linux is one of them. In this review, I take a look at its features,and you can decide whether it's a text editor, IDE or somethingin between.
Installation is fairly straightforward if you've ever installed aclosed-source application in Linux. Both 32- and 64-bit versions areavailable, and on the handful of systems on which I installed it, I didn't runinto any problems with dependencies. The installation must be performedon the command line, as there is interaction during the install (Figure 1). By default, the program is installed into the /opt/slickeditdirectory. (Thanks to the SlickEdit folks for not using weirdcapitalization in the installation directory; that is so frustrating.)
Starting SlickEdit the first time is a little cumbersome, because theinstaller doesn't appear to make any icons in the system menu or on thedesktop. A desktop icon is created after the first launch of SlickEdit,but you have to get past the catch 22 of needing to start the programto create the program startup icon. The executable to start SlickEditby default is /opt/slickedit/bin/vs, and typing that in a commandshell starts the program and its initial wizard right up.
During the Quick Start Wizard, you start to see some of SlickEdit's neat features.Figure 2 shows the configuration screen for selecting keyboardemulation. If you're used to a particular set of keybindings(like vim in my case), SlickEdit can use those familiar keybindings bydefault. You even can customize the emulation if your needs don't lineup with the dozen-plus emulation options offered.
One of the other neat features configured during the initial wizardphase is the customization of how you prefer your code to look. Figure3 shows indentation and brace-style configurations that can be set forall languages. The indentation and methods for displaying braces andparentheses certainly don't change the compiled product, but theymake code look however you prefer. And, a happy coder is an efficientcoder, right?
You can change many other initial settings, such as color themes,font size and choice and so on. Once configured,you even have the option toexport your settings so they can be imported on another machine. It'sa great feature if you use SlickEdit at home and at work, in order toensure your developing environments match.
Once the initial quickstart is complete, it's easy to be overwhelmedby the feature set. Thankfully, although SlickEdit boasts an incrediblenumber of features, understanding them all isn't a prerequisite forcoding. As shown in Figure 4, I jumped right in with a simple Bash scriptto see how well it handles code formatting. As expected, it looks andbehaves quite nicely.
Next, I tried to work with one of SlickEdit's new features, namely Gitrepository interaction. Here, I was met with some frustration. Although I couldget SlickEdit to recognize my local cloned Git repository, using the GUItools to interact with a remote GitHub repo consistently locked up theinterface, requiring me to kill the process and start over. Admittedly,I'm a novice programmer, but my navet shouldn't lock up theprogram. Git support is new, however, so it is possible a few bugs needto be shaken out.
Although Git support is new, SlickEdit still has FTP built in to accessremote repositories. I really like the flexibility to use either thebuilt-in file management or to manipulate my files separately andsimply browse the local file structure with SlickEdit.
SlickEdit is a code editor, and credit where credit is due, it reallyexcels in this area. Some features like code highlighting are expected,but some others stand out from the crowd. I'm listing a few of my favorites below.
As a programmer, I'm personally limited to a handful of languages. Infact, when it comes to Java, I can't even say hello to theworld. SlickEdit takes me to task in this department, supporting more than40 languages. To be fair, some of those languages are specific to theirplatform (that is, Microsoft), but I couldn't think of a single languageit doesn't support.
One of the advantages of using a tool like SlickEdit is that because itknows languages you might not be intimately familiar with, it'sa great tool for jumping right in to unfamiliar code with unfamiliarsyntax (which leads to my next favorite feature).
Autocompletion doesn't stop with code syntax, however; SlickEdit alsoautocompletes any symbols or words while you type. This is great for longsymbols or variable names. SlickEdit searches your open document in realtime for matches and pops up a box with the matches it finds. If youdon't want to use autocomplete, simply ignore the pop-up box and keeptyping. Focus isn't taken away from what you're typing.
As I've mentioned, SlickEdit supports revision control systemslike Git, but it also keeps a history of changes every time a file issaved. Even if you haven't committed your changes, you still can seethe history of changes made to your files. Access to the save historyreally can save your bacon if you accidentally save an error bymistake.
SlickEdit uses a tool called DIFFzilla to compare files. It'salso possible to compare folders full of files or active buffers inthe editor. What makes DIFFzilla great is that it does its best job toreformat non-compilable differences (like whitespace or line breaks wherethey don't matter) in order to display the code side by side. This mayseem like a minor feature, but it makes comparing files line by linea breeze. In fact, you can edit the code directly from the DIFFzillawindow, and the updates are written back to the location where you opened the file.Figure 5 shows DIFFzilla in action.
For programmers who use chunks of code over and over (the foundationof FOSS, no?), SlickEdit supports code templates. Basically, anycommon coding elements can be saved as a template and used in aproject easily. Re-using code isn't revolutionary by any means, butthe templating system makes it easy to do. By using templates, thereis no longer a need to search/replace the files to make it match yourproject. SlickEdit automatically changes the specified parts of thetemplate to match your needs.
Life without regex would be hard to sort through. Bad joke, I know, butas powerful as regular expressions can be, they also can be mind-bending,especially after a long day of coding. SlickEdit includes a "RegexEvaluator", which lets you test your regular expression in real timeagainst test data. It doesn't guarantee your regex will be perfect,but the real-time testing can help eliminate silly mistakes.
Programmers love to re-use code, but they also tend to repeat the same tasksover and over as well. SlickEdit has a nifty macro-recording feature,so that you can assign a keyboard shortcut to a process you need to dooften. It can be as simple as a key to add/remove a comment, or it canbe as complicated as rewriting sections of code.
If you have complex macros to create, SlickEdit includes its ownprogramming language specifically for macros. Slick-C has extremelycomplex abilities that can interact with just about every facet of theSlickEdit program. If you generally go through a long list of procedureswhen you start a new project, SlickEdit can be programmed to do themfor you with a single keystroke. Information on the Slick-C languageis available on the SlickEdit Web site.
No, I'm not talking about that stuff you ate in kindergarten, but plain-old copy/paste. Whenyou paste a chunk of code from one place to another, SlickEdit willmatch indentation and brace placement automatically. It's anotherfeature that doesn't affect the compiled code, but it makes the sourcemuch easier to read and less embarrassing to share.
A feature I bet Windows programmers appreciate even more than we do inLinux is the built-in command-line interface. Once activated, the commandline offers a set of commands that can be accessed command-line-style. Itssimilarity to the Linux command line might be a little confusing, becausealthough some of the output is similar (typing ls for instance),it's not truly a Linux shell. For quick mouse-free file interaction,however, it is worth the effort to learn the commands available.
Although most of the new features are self-explanatory, the multithreadingis more than just minor code efficiency. In the past, when parsingsource code for tagging, SlickEdit would force the user to wait. Now,a little box pops up telling you it's working in the background. Forlarge projects with lots of files, this seemingly insignificant featurecan save tons of time.
SlickEdit is an amazing tool. As a novice programmer, I barely scratched thesurface of its full abilities, but even so, I found it's extremelyuseful. One of my favorite features is the keyboard emulation, whichmakes the learning curve a little less steep. Although its features make itideal for a full-time, professional programmer, unfortunately, so does itsprice. At $299 for a single user license, SlickEdit isn't for everyone,but for programmers working in an environment where time is money,its time-saving features alone will pay for itself in short order.
Apart from a few minor issues, like the lockups when trying toconfigure Git, SlickEdit was very stable during my testing. The GUIitself seems to use a proprietary toolkit, or one I'm not familiarwith. The menus behave strangely from time to time, and they refuse to closeoccasionally, requiring me to click off the main window to get it tobehave properly. It's possible that is just some strange conflict withmy Xubuntu desktop, and it isn't a showstopper by any means.
c80f0f1006