I replaced TextExpander with Keyboard Maestro as my primary text expansion tool because I prefer the native editing experience and the flexibility that Keyboard Maestro offers.

The post on creating memorable abbreviations is still relevant regardless of what apps you use for this task. In this post, I’m going to share some tips and changes I’ve made to import the snippets that I often use in TextExpander.

Organize Them with Emoji

By default, Keyboard Maestro sorts macro groups by name. The only way to categorize similar macro groups together is by prepending the group name with a symbol or an emoji — I wrote a post that covers more details on organizing your library separately.

I have more than ten snippet groups in TextExpander. However, I’ve decided to import two snippet groups that I often use and prepend them with “Media Shuffle Playback” emoji 🔀 which is kind of similar to expanding.

  • 🔀 Avoid These Words: This group contains the word that I want to avoid and correct. It also omits some useless words like basically, actually, and clearly.
  • 🔀 Text Expansion (or General): This group acts as a general group for my most frequently used snippets. I might move some of them to their dedicated group later on.

Prompt for User Input

One of the key features that make TextExpander great is its wide selection of fill-in fields that allows you to complete the missing snippet details on the fly.

Here’s an example of this kind of snippet:

Hi <FirstName>,

I'm from <AgencyName> which specializes in helping offline business grow their online presence through social media and website branding.

I researched about <LeadCompany> and want to share some tips to help you gain more customers:

{ list the reasons }

Are you available for a quick call to discuss this partnership?

You can request all these details with Prompt for User Input action and save them to local variables before expanding them. Here is what it looks like in Keyboard Maestro.

Prepending Local to the variable name will make it available only to the macro calling it. Learn more here.

Hi %Variable%LocalFirstName%,

I'm from %Variable%LocalAgencyName% which specializes in helping offline business grow their online presence through social media and website branding.

I researched about %Variable%LocalLeadCompany% and want to share some tips to help you gain more customers:

{ list the reasons }

Are you available for a quick call to discuss this partnership?

Prompt with List from Text

Here is a simple macro that you can create that lets you choose which email address to use. By assigning @@@ as the abbreviation, you can enter your email addresses as a list that you can choose whenever you need them.

You can enter your personal email address and work email address in this macro. Another example use case is whenever I write an email template that offers different questions or options. Instead of writing them down whenever there is a prompt, you can save them into a list and select them with a filter.

Format with ICUDateTime

I have a specific use case where I expand .now into today’s date. It’s nothing fancy. I use them to prepend my notes and files that should be sorted by date in the file system.

By combining it with Prompt with List from Text action, I set up a shortcut for .pay that lets me name the note I send to my Evernote’s Receipts notebook.

%ICUDateTime%yyyy-MM-dd% %Variable%LocalClipboard%

Insert by Pasting vs Insert by Typing

Insert by Pasting offers better performance because it doesn’t need to simulate any keystrokes. However, you will encounter some scenarios where using Insert by Typing is an ideal choice. Here are some of those scenarios:

  • Some websites prevent you from pasting from your clipboard into their email/password field.
  • You want to maintain the focus of the dialog/input window from applications like Alfred or Spotlight.