You will use system text replacements in macOS whether you like it or not

I’ve put a lot of effort into shorthands over the last fifteen years — typing things like “angtft” to get “ain’t nobody got time for that!” — and I’ve been up to my eyeballs in a major renovation of my library of abbreviations over the last couple months. Creating and learning effective shorthands is a fascinating language/memory/technical challenge with many unintended consequences and wrong turns. Bloopers abound! So many that it constantly casts doubt on the value of the whole enterprise, but I’m playing a long game and I’m convinced it’ll be worth it in the end. Absolutely positive. Well, fairly sure anyway. Okay, I wouldn’t exactly put any money on it.

The worst technical problem I’ve run into is a feature baked right into macOS.

I use two kinds of shorthands: a powerful system consisting of many hundreds of terms powered by Typinator on my Macs, and a small, simplified subset of dozens of shorthands that I use exclusively on my iThings… or, rather, I wish I could use exclusively on my iThings.

My simpler iCloud-synced shorthands are vital for productivity on my iOS devices, but they are unwelcome on macOS, and effectively cannot be disabled. I can’t just delete them on my Macs, because that would delete them everywhere. Safari and Notes are where I usually encounter them, but they will also appear in any app that uses vanilla text-entry.

The iOS text replacements are unwelcome on my Macs because of all the false positives, one of the main bogeymen of any shorthand system. Shorthands that tuned for iOS are much too easily triggered accidentally on a Mac, where there’s 1000× times more typing and data entry of every kind. Those shorthands also often conflict with Typinator: there are a some things they both try to replace simultaneously, which does not go well.

Surely I can just disable them on macOS? There has to be a master switch! You’d think so, but this is where things get weird a bit weird. It took me quite a while to figure this out. Edit → Substitutions → Text Replacement (wherever it’s available) affects a window/tab, not the whole app, and so it’s always on by default in new tabs and windows, and this default enthusiasm for replacing text cannot be changed. There is no master switch in System Prefs → Keyboard → Text... and if there’s a “defaults write” that does the trick, it eludes me. This seems like it should work for Safari at least, but it does not:

defaults write -g WebAutomaticTextReplacementEnabled -bool false

A bibliographic record in BibDesk. I can uncheck that text replacement option, but it returns in every single item window.

Also, the state of the other Substitutions options (e.g. quote educating) persists in new tabs/windows exactly as you’d expect it to. Only the Text Replacements option has this zombie like stubborness in new tabs/windows. And so this seems buggy.

Some apps have a single window and the text replacements can be turned off and I never have to think about it again. For instance, in the Messages app (which I use heavily), all discussion threads inherit the Text Replacement state of a single window, which is preserved when the app is quit. But in some apps, like my bibliography manager, BibDesk, almost all work is done in “fresh” windows. Even if it was practical to turn text replacement off in every record — and it really isn’t — it doesn’t stick. So the system shorthands are always with me in that app, and several others.

Update summer 2020: still no change. MacOS Catalina still behaves exactly the same way.