I finally created a text replacement to convert "eg" to "e.g.,". What's your "life's too short to waste keystrokes" text expansion?

I’m always used text replacement for my email address and some other obvious ones, but I recently realized how many taps “e.g.,” is on iOS. So, I made a replacement to swap “eg” for “e.g.,”. The text replacement switches nine taps to two!

What other dumb phrases am I wasting my life typing out?


My address replacement is /1492, that gets converted to my street address.

In Discourse forums that do not tolerate brevity (like this one :lollipop: ) the string 20c is converted to twenty periods.

If I have a list of files in DEVONthink or the filesystem that I’m reading through, this string /x is converted to xDONE_. I rename files using that replacement: inserting xDONE_ into the front of the name so that the file sorts down to the bottom of the list and I know I’ve processed it.


my first replacement ever in iOS:

  • kshrug become ¯\_(ツ)_/¯

then it all expands to, some example:

  • kq become triple backticks (handy to write markdown codeblocks, or monospace in whatsapp/slack)
  • kcmd become ⌘, kalt become ⌥, kspace become ␣ , etc.

in macOS, I replace the k- prefix to ;. Using ever-changing text expansion softwares.


My email addresses with @ followed by the first letters of the email domain as in @me for my Apple email address.

I also have this closing phrase:

“Please let me know if you have any questions or need additional information” by invoking :please

I have a lot more of course but those are some that I use constantly.


Great idea! ……………………….


I use pss for p.s. - as I always type it ps. and then had to backspace to add the other .

I don’t remember who suggested this, but I use

@@ = primary email address

@@@ = Gmail address

@@@@ = work email address

I am locked in an eternal battle with iOS over omw which I have declared to mean “On my way” but iOS insists that it should be “On my way!” despite me changing it approximately 10,000 times because that does not warrant an exclamation point unless you are clinging to the edge of a cliff and I am coming to rescue you, which only happens twice a year, at most.

Of course I should just use something like omm instead but I refuse to give in.

@grand expands to my Google Voice number because when I started using it, it was called “Grand Central”.


I have an expansion on iOS that explains someone has emailed the wrong Gmail account, plus a French one due to a lot of Quebecois doing it and not understanding the English one. Saves me hours. :slight_smile:


@jj personal email
@jgt school email
,,, = ``` because backticks are a pita on ios
;;oh is my Obsidian header:


And of course yada is 20 dots

1 Like

I have ^2 goes to ² , ^4 goes to ⁴ etc. as favourites
Plus I added “Graeme” goes to “Graeme” to help my devices recognise my name.
Plus the email type,
and I’m immediately stealing some of these great ideas too.



I use e.f for my fastmail address and e.u for my university address, and a lot of others based on this system:


By far my most commonly used are d.t for date today 2021-05-18
d.pt for date in prose today May 18, 2021
And less frequently d.pz for date in prose South African (ZA) style 18 May 2021

This example also (for me at least) illustrates the memorability of the system.


Most of my replacements are on macOS, and done with Typinator. In that category I use these frequently:

/dd converts to the current yyyymmdd (20210519), the format I use as a prefix in file naming.

.dw converts to 2021-05-19 Wed, the format I use for daily notes.

/me converts to my name

.join converts to the standard link I use for inviting people to Zoom


Oh, on macOS, things get a lot more fun.

I have used ddate forever as “today’s date” ==> 2021-05-19

I recently added ddd as “tomorrow’s date” ==> 2021-05-20

Since I very often need to refer to Sunday’s date, either the previous one or the next one, I have these:

+sun = 'next Sunday’ ==> 2021-05-23

+SUN = ‘next Sunday’ ==> May 23rd, 2021

-sun and -SUN do the same, but for the previous Sunday.

This is getting beyond the scope of things we’re talking about here, but a few months ago I added a KM conflict palette for Control+Shift+Z which shows me several different repeating Zoom meetings I have.

When I choose the one I want, it searches my calendar for the next occurrence of a meeting with that name. When it finds it, it creates an email with the proper “To:” line for that meeting and with the subject line like this: “Personnel Committee Meeting Reminder: Wed, May 19th at 6:00 p.m.”.

The email body is Markdown that looks like this:

Meeting / Event       | Personnel
Time & Date           | Wed, May 19th at 6:00 p.m. US/Eastern
Meeting ID            | `867 5308 8867`
Passcode              | `12345`
Join Via Zoom         | [Click To Join](https://us02web.zoom.us/j/86753088867?pwd=whatever)
Join Via Cell Phone ¹ | [Tap To Join](tel://+19292056099,,86753088867#,,,,*12345#)
Join Via Any Phone ²  | `(555) 321-4567`

¹ _If you use that link to dial via cell phone, it will attempt to automatically enter the Meeting ID and Passcode for you._

² _If you dial directly, you will need to manually enter the Meeting ID and Passcode to join the meeting._

but because I use Mailmate for my email app, when it gets sent, it looks like this:

Meeting / Event Personnel
Time & Date Wed, May 19th at 6:00 p.m. US/Eastern
Meeting ID 867 5308 8867
Passcode 12345
Join Via Zoom Click To Join
Join Via Cell Phone ¹ Tap To Join
Join Via Any Phone ² (555) 321-4567

¹ If you use that link to dial via cell phone, it will attempt to automatically enter the Meeting ID and Passcode for you.

² If you dial directly, you will need to manually enter the Meeting ID and Passcode to join the meeting.

Which is a lot nicer than the usual Zoom invite email, which is a hate crime against eyes.

On Sunday afternoons, I look at my calendar for the week ahead, create all of the meeting reminders that I’m going to need using that Control+Shift+Z and write the emails in Markdown/Mailmate. Then I save them as drafts.

Since we use G-Suite for our email, I will then log into the web email (basically Gmail), go to my Drafts folder, and use the “Scheduled Send” feature to schedule the meeting reminders to be sent 24-hours before the meetings.

That way I’m only writing email meeting reminders once a week, and I don’t have to ask myself “Did I remember to send the Zoom link for this meeting?” (Or, worse, have someone email me to say “You forgot to send out the link.)

Also, I found that if I send the emails too far in advance, people “lose” the email and the link. 24 hours seems like a good amount of lead time.


I use TextExpander constantly in writing my lab reports. Words that I use:
;flu = fluorescent
;dem = demarcation
;neu = neuroscience

Then I have a raft of things that I use because I’m to lazy to use the caps lock button, lol. Things like typing dna in lowercase letters become upper case DNA, or specific antibody labels that I don’t feel like reaching all the way across the keyboard to hit the dash button to complete the name of :slight_smile:

Basically my keyboard is set up so my hands never really leave the home row.


After years of contorting my fingers to type the macOS “paste unformatted text” keystroke (Command-Option-Shift-V) to paste plain text from formatted text, I type “vv” instead, which takes what is on the clipboard and pastes it as plain text. That came bundled with Typinator.

Also, my firm’s case management system assigns tasks using this format:

@ plus first initial and last name (so @jsmith)

Fortunately, none of the 30+ people in my firm have the same two letter combination, so I’ve set a snippet for all 30 people, so I can type @ plus the first two letters, and the rest of their handle is completed for me.


These are excellent, thanks! I used to use omw but it failed when I typed the abbreviation ‘tomw’ for tomorrow.

1 Like

Along with many listed here already, I have…

xspc replaces to “⠀ “ tho less helpful now does allow me to “pin” Team chats to the top of the list.

I also have xhav in km to check the date and time and output “have a nice day/afternoon/evening/weekend” as appropriate for signing off emails.

1 Like

Ah, dates on macOS:

ddd = 2021-05-19 (date with dashes)
ddh = May 19, 2021 (date for humans)
ddt = 20210519112142 (date with time)
ddtd = 2021-05-19 11:24 AM (date with time dashes)
ddth = May 19, 2021 11:23 AM (date with time human)
ddn = 20210519 (date numeric)
ddi = 2021-05-19 JTJ (date with initials)
dds = 05/19/2021 (date with slashes)
ddm = May 20, 2021 (date tomorrow)
ddy = May 18, 2021 (date yesterday)

xGFY converts to “Thanks for your valued opinions on this topic. They are genuinely appreciated”.

I find it rather therapeutic.


Here’s my Keyboard Maestro conflict pallet for dates (^F3):

I also have an expansion that figures out the beginning and end of the current week.
i.e. 2021/05/16 - 2021/05/22

along with short date (“sdate”: 2021-05-19) and short date for yesterday (“syes” 2021-05-18)

And finally I have expansions for every state name by using two letter USPS abbreviation (i.e. “:mn” for Minnesota)


Hahah. This is a fair question, I think—no part of this thread explains what text expansion is. If you read it without context it might look like we’re all typing in tongues.

Text expansion is a feature of macOS/iOS and a variety of apps. You tell the system/app that when you type a certain string, it should replace that string with something else. E.g., the example I provided uses the shortcut phrase eg, and replaces that with e.g.,. For another example, instead of typing my email address out in full, I can simply type ./em, and it is replaced with the address.

The macOS text replacement settings can be found in System Preferences → Keyboard → Text, and the iOS text replacement settings can be found in Settings → Keyboard → Text Replacement. If you’re signed into your devices with the same Apple ID, it’ll sync any text replacement strings you put in these sections.

Other popular text replacement apps include Alfred (via the Snippets feature), Keyboard Maestro, espanso, Rocket Typist, and Text Expander. They offer different levels of ease of set up/use and power.

Keyboard Maestro, for instance, can do a bajillion things when you trigger a text expansion… but it’s a bit more involved to set up some simple strings. Alfred’s Snippets, Text Expander, Espanso, and Rocket Typist all offer different kinds of tools to use when invoking a text replacement. Each of these apps, for example, allow you to use dynamic placeholders: ways of inserting “smart” content when using a text expansion. E.g., inserting the name of the person you’re replying to in an email when you type cannedreply, or writing out today’s date when you type ddate.

All of this may seem a bit finicky, but “[t]here are a finite number of keystrokes left in your hands before you die” (Scott Hanselman). Text expansion is one of the simplest ways you can use automation to save yourself time and reduce the number of mistakes you make.