Tue 19 Jun 2012
A Few of our Favorite Things
Posted by Matthew E under Code Editors, Productivity, Programming, SlickEdit Products
[3] Comments
Whenever we’re putting together marketing materials, advertising copy, checklists of features to demo at trade shows, etc, a common start of the conversation is “What are the top features of SlickEdit”. Feature lists are all well and good, but just because we think a feature makes a Top Ten list doesn’t mean it resonates with every user. And features are usually spoken of in broad brush strokes, like “Version Control Integration” or “Configurable Keyboard Emulations”. But what really makes your editor an indispensable tool is the collection of small features and tricks that you use every day. And there is no Top Ten list that covers this, as everyone’s list is different.
We did a quick poll around the office to gather up some of the features that we use all the time. And yes, everyone’s list was quite different. So in no particular order, here are a few of our favorite things in SlickEdit.
Italic bold below denotes a Slick-C command, like complete-next, which can be executed from the SlickEdit command line or bound to a keyboard shortcut.
complete-next and complete-prev
Bound to Ctrl+Shift+> and Ctrl+Shift+< in most emulations. This searches for prefix matches in your current document. Very handy for completing words when you’re working in plain text or in a file format where Context Tagging is not able to provide symbol matches, or when you want to pick up non-symbol matches, like words found inside comments.
where-is, what-is, and bind-to-key
For those of you who like to keep your hands on the keyboard as much as possible, you need this. Sure this information is available on the menus and in the Options dialog, but why mouse around? Entering where-is on the SlickEdit command line will allow you to enter a Slick-C command to see if there’s a keyboard shortcut defined for it, while what-is lets you see the command name for a shortcut, or check if it’s free. Use bind-to-key to define a shortcut for something that’s currently not bound to one.
Aliases with %\n
If we had to list which features of SlickEdit we feel are underutilized outside our office walls, Aliases would be at the top of every list. Aliases simply allow you to type a short sequence which will be expanded, which is great for frequently used boilerplate text. They can be defined globally or on a per-language basis. We do provide some aliases out-of-the-box, but the real power is in creating your own. Go to the Tools > Options dialog, and search for “Aliases” to see where you can define them.
A common usage is generating “Caveman Debugging” statements. Here’s a sample alias for C.
printf(" %\n: %\c \n");
The SlickEdit alias facility has several escape sequences, and %\n is the sequence for “current function name”, and %\c positions the cursor for editing after the text expansion is made.
toggle-comment
This feature originated as a macro written by one of our customers, which he shared on our community forums. It was so popular that we made it part of the product. It’s a great complement to comment-lines and comment-block.
Quick replacements from the command line
Doing a quick search and replace inside the current file is a snap using the c/old/new/ syntax on the command line. Even more power comes from using command modifiers after the trailing slash. For example, the ‘m’ modifier means ‘mark’ (our term for current selection), and ‘*’ means globally without confirmation prompting. So to change all instances of char to wchar_t in your current selection without a prompt, you would enter c/char/wchar_t/m* on the command line, and you’re done.
svc-diff-with-tip
This is a super-quick way to compare your current file with the most recent version in version control, bypassing the version control history dialog. This currently supports CVS, Subversion, and Git. And if you’re using Subversion, and not currently able to connect to the repository, svn-diff-with-base performs a comparison with the ‘clean’ copy from your most recent update.
svn-get-annotated-buffer and cvs-get-annotated-buffer
A wrapper around the “blame” command for CVS and Subversion. Warning: May be habit-forming.
list-buffers and project-load
These bring up the Files tool window. Stop right there! You’re about to skip past this one because the word “Files” is pretty plain, and “bring up the Files tool window” sounds pretty dull. Do yourself a favor and try them out, and perhaps set up keyboard bindings for them. list-buffers will show you a searchable list of all the files you currently have open, allowing you to quickly switch to one without having to search through file tabs. Handy if you tend to leave a lot of files open in the editor. If you have a project open, the Project and Workspace tabs of the Files window allow you to find any file and open it from there. Very helpful for large projects.
Vim cursor keys
I hesitated to include this one initially. It’s not specific to SlickEdit, of course, and is only one of the 15 keyboard emulations we define. But if you’re a vi/vim adherent, having a high fidelity vim emulation built into your IDE is a big deal. It allows you to get all the benefits of the tools and features built into the environment without having to rewire you brain when you actually need to edit code. If you’ve ever accidently typed a stray ‘j’, ‘h’, or ‘dd’ or into an instant messaging client, you know exactly what I mean.
What feature(s) is/are highest on your list?
June 19th, 2012 at 3:13 pm
Based on this list of 9, I underutilize 5; of those 5, there are 3 I do not need in my daily work. I don’t use Vim emulation. This leaves 2 that I need routinely and underutilize:
o complete-next and complete-prev
o Aliases with %\n
I’ve used Slickedit from it’s early days on OS/2) with version 2.x in the mid-to-late-’90′s) to the present. You can’t help but soak up a lot of handy tips and experience when using the editor over such a long period of time.
June 19th, 2012 at 3:34 pm
Once you’ve taken complete-next/prev for a spin, be sure to look at the complete-more command, which can be used right after complete-next/prev. This gives you a quick way to copy the words right after the match you selected. Handy for those “copy most of that line” cases, where otherwise you’d copy/paste a whole line, drop to the end, back up a couple words, then delete to the end of the line.
One thing that’s a little confusing when you first start looking at Aliases is the “surround with” checkbox on the UI. Make sure that box is unchecked when you first start creating simple one-liner aliases. Surround with aliases are also cool, but they operate on text selections, and the replacement/insertion is done with the surround-with command. (And yes, we are looking to reduce the confusion in authoring one’s custom aliases.)
June 19th, 2012 at 5:09 pm
This list does a good job of capturing the essence of the good side of SlickEdit. The complete-next/prev/more features hooked me on the editor in 1996, and are still the features I miss the most when I’m using other tools.
Similarly, aliases and command-line abilities set SlickEdit apart.
I would add the block-insert-mode command and the superior block editing features in SlickEdit.
JH