How can I add autocorrect shortcuts programmatically?
In System Preferences > Keyboard > Text, I can add shortcuts that will be available to me globally via autocorrect.
Lets say I had 100 of these shortcuts and they were on two Macs, rather than adding/removing each individual item by hand, is there a way to maintain a single .plist
file that could manage these shortcuts?
Solution 1:
You can copy the settings to another Mac by copying ~/Library/Preferences/.GlobalPreferences.plist
.
Note that preferences are cached on 10.9, so if you replace a plist or edit it directly, quitting and reopening applications won't apply the changes. You can apply the changes by running defaults read -g
, by running killall cfprefsd
, or by logging out and back in. Changes made with defaults are still applied if you just quit and reopen an application.
Print the current settings:
defaults read -g NSUserDictionaryReplacementItems
Add one setting:
defaults write -g NSUserDictionaryReplacementItems -array-add '{on=1;replace=cmd;with="⌘";}'
Replace all settings:
defaults write -g NSUserDictionaryReplacementItems '(
{on=1;replace=cmd;with="⌘";},
{on=1;replace=opt;with="⌥";}
)'
Print the current settings as XML:
defaults read -g NSUserDictionaryReplacementItems | plutil -convert xml1 - -o -
Replace all settings:
amp() { local x=${1//&/& }; x=${x//</< }; printf %s "${x//>/> }"; }
out='<array>'
while IFS= read -r l; do
out+="<dict><key>on</key><integer>1</integer><key>replace</key><string>$(amp "${l%% *}")</string><key>with</key><string>$(amp "${l#* }")</string></dict>"
done <<< 'cmd ⌘
opt ⌥'
defaults write -g NSUserDictionaryReplacementItems "$out</array>"
Replace NSUserDictionaryReplacementItems
with NSUserReplacementItems
in 10.8 and earlier.