2 votes

Écriture dans NSUserDictionaryReplacementItems avec des valeurs par défaut

La commande suivante lit le NSUserDictionaryReplacementItems. Les touches sont appelées Raccourcis textuels dans OS X.

defaults read NSGlobalDomain NSUserDictionaryReplacementItems

Je souhaite créer de nouveaux raccourcis à l'aide de la fonction defaults car dans Mavericks, les listes sont désormais mises en cache (et pour d'autres raisons). Comme vous pouvez le voir dans la sortie de la commande ci-dessus, d'autres clés et valeurs sont listées. Comment puis-je accéder aux clés et aux valeurs à l'intérieur de la liste principale de NSUserDictionaryReplacementItems clé ? La page de manuel de defaults ne dit pas comment (ou si) cela peut être fait.

4voto

Différentes façons d'ajouter un remplaçant :

defaults write -g NSUserDictionaryReplacementItems -array-add '{on=1;replace=a;with=b;}'

defaults write -g NSUserDictionaryReplacementItems -array-add '<dict><key>on</key><integer>1</integer><key>replace</key><string>a</string><key>with</key><string>b</string></dict>'

Différentes façons de remplacer la liste complète :

defaults write -g NSUserDictionaryReplacementItems -array '{on=1;replace=a;with="b \"\\b";}' '{on=1;replace=c;with=d;}'

defaults write -g NSUserDictionaryReplacementItems '({on=1;replace=a;with="b \"\\b";},{on=1;replace=c;with=d;})'

defaults write -g NSUserDictionaryReplacementItems '<array><dict><key>on</key><integer>1</integer><key>replace</key><string>a</string><key>with</key><string>b "\b</string></dict><dict><key>on</key><integer>1</integer><key>replace</key><string>c</string><key>with</key><string>d</string></dict></array>'

Quittez et rouvrez les applications pour appliquer les changements.

Edit : les modifications apportées avec defaults sont perdues si vous ouvrez l'onglet Texte du panneau de préférences Clavier. Pour éviter cela, utilisez un script comme celui-ci :

date=$(date +%s)
while read -r replace with; do
  plist+="{on=1;replace=\"$replace\";with=\"$with\";},"
  sql+="INSERT INTO 'ZUSERDICTIONARYENTRY' VALUES($((++i)),1,1,0,0,0,0,$date,NULL,NULL,NULL,NULL,NULL,\"$with\",\"$replace\",NULL);"
done < <(sed 's/\\/\\\\/g;s/"/\\"/g' ~/replacements.txt)
sqlite3 ~/Library/Dictionaries/CoreDataUbiquitySupport/$USER~*/UserDictionary/local/store/UserDictionary.db "delete from ZUSERDICTIONARYENTRY;$sql"
defaults write -g NSUserDictionaryReplacementItems "(${plist%?})"

Les remplacements sont enregistrés dans ~/Library/Dictionaries/CoreDataUbiquitySupport/$USER~*/UserDictionary/local/store/UserDictionary.db même si iCloud est désactivé.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X