¿Dónde se almacena la lista Reemplazar / Con?

3

Esta lista, a la que accedió por Preferencias del Sistema / Teclado / Texto, desapareció cuando actualicé a 10.9.2 (sobrevivió a la actualización inicial de Mavericks). Escribo mucho para las ciencias y llevo años elaborando esa lista. (MacBook Pro reciente, 10.9.2).

Algunos sitios dicen que debería obtener el archivo /Users/username/Library/Preferences/.GlobalPreferences.plist de una copia de seguridad, pero he buscado en el HD de mi otra computadora (las mismas especificaciones pero ejecutando 10.9.1, Reemplazar / Con la lista intacta), y no puedo encontrar dicho archivo.

Otros sitios dicen que está en la matriz "NSUserDictionaryReplacementItems" en 10.9, pero desafortunadamente no sé qué significa eso. (Soy un usuario, no un programador).

He oído que puede estar vinculado a la nueva capacidad de Mavericks para sincronizar esta lista con los dispositivos iOS, pero eso no explica por qué no puedo encontrarla en mi máquina 10.9.1, que se ha estado sincronizando. a mi teléfono (iPhone 4, iOS 5.x) durante años.

    
pregunta user72789 12.03.2014 - 08:13

4 respuestas

5

En 10.9, las sustituciones de texto también se almacenan en ~/Library/Dictionaries/CoreDataUbiquitySupport/$USER~*/UserDictionary/local/store/UserDictionary.db . UserDictionary.db se usa incluso si iCloud está deshabilitado y tiene prioridad sobre .GlobalPreferences.plist .

Si, por ejemplo, ejecuta defaults write -g NSUserDictionaryReplacementItems '({on=1;replace=aa;with=bb;})' y cierra y vuelve a abrir TextEdit, aa se reemplaza con bb en TextEdit, pero los cambios se revierten si abre la pestaña Texto del panel de preferencias del teclado.

Puedes cambiar tanto UserDictionary.db como .GlobalPreferences.plist usando una secuencia de comandos como esta:

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%?})"

En 10.8 y versiones anteriores de OS X, los reemplazos de texto se almacenan en la matriz NSUserReplacementItems (no en NSUserDictionaryReplacementItems ) en ~/Library/Preferences/.GlobalPreferences.plist .

    
respondido por el user495470 17.04.2014 - 12:32
3

Encontré una forma más fácil de hacerlo.

Siga estos pasos para exportar sus sustituciones de texto existentes: - Abrir preferencias del sistema > Teclado > Texto.

  • Seleccione los accesos directos que desea exportar. Si desea exportar todas sus sustituciones de texto, seleccione una de ellas, luego elija Seleccionar todo en el menú Editar.

  • Arrastra los accesos directos seleccionados al escritorio. Esto crea un nombre de archivo Text Substitutions.plist que contiene las sustituciones que seleccionó.

  • Cierre la ventana de Preferencias del sistema.

Siga estos pasos para importar el archivo plist que creó en otra cuenta de usuario: - Copie el archivo plist que creó anteriormente en la carpeta / Users / Shared /, o en una unidad externa.

  • Inicie sesión como la cuenta de usuario donde desea usar estas sustituciones de texto.

  • Abrir preferencias del sistema > Teclado > Texto.

  • Arrastre el archivo Text Substitutions.plist al área de la ventana de Preferencias del Sistema donde se muestran las sustituciones de texto (debajo de Reemplazar o Con).

  • Cierre la ventana de Preferencias del sistema.

fuente: enlace

    
respondido por el Kevin 16.10.2015 - 23:52
0

Las preferencias se almacenan en NSUserDictionaryReplacementItems en ~ / Library / Preferences / .GlobalPreferences.plist.

Puedes leer el contenido abriendo el archivo y revisándolo, o ejecutando:

defaults read -g NSUserDictionaryReplacementItems

Para copiar sus preferencias a otra máquina, tome la salida del comando anterior y ejecute el siguiente comando para escribir su configuración:

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

Reemplace el contenido de la matriz al final del comando con los reemplazos que desee.
-array-add se agrega al final de la matriz. Use -array para reemplazar la matriz completa.

    
respondido por el grg 12.03.2014 - 08:22
0

He escrito un script para hacer una copia de seguridad y restaurar la base de datos. No es necesario extraer nada de .GlobalPreferences.plist, simplemente copie la base de datos y abra las preferencias del sistema para volver a cargar la configuración.

############
#!/bin/bash

ME=$USER

DB_BACKUP_DIR=$HOME/Desktop
DB_BACKUP_FILE=$DB_BACKUP_DIR/UserDictionary.db

# Find the path where the replacement DB is:
PLIST=$HOME/Library/Preferences/com.apple.configurationprofiles.user.plist
UUID=$(defaults read "$PLIST" APNSTokens_Production|grep -E '^\s*"[0-9A-F-]*"'|cut -d\" -f2)

DB_RESTORE_DIR=$HOME/Library/Dictionaries/CoreDataUbiquitySupport/$ME~$UUID/UserDictionary/local/store
DB_RESTORE_FILE=$DB_RESTORE_DIR/UserDictionary.db

function Backup(){
    echo "Backup"
    [ \! -d "$DB_BACKUP_DIR" ] && echo "Backup directory does not exist" && echo "$DB_BACKUP_DIR" && exit 1
    echo "Copying database file"
    cp -fv "$DB_RESTORE_FILE" "$DB_BACKUP_FILE"
}

function Restore(){
    echo  "Restore"
    [ \! -r  "$DB_BACKUP_FILE" ] && echo "Cannot read the backup file" && echo "$DB_BACKUP_FILE" && exit 1
    [ \! -d "$DB_RESTORE_DIR" ] && echo "Creating Restore Directory" && echo "$DB_RESTORE_DIR"
    echo "Copying database file"
    cp -fv "$DB_BACKUP_FILE" "$DB_RESTORE_FILE"

    # The database has been copied, but OS X ignores it
    # until the tab System Preferences \ Keyboard \ Text is opened at least once
    # Use osascript to open and close System Preferences \ Keyboard \ Text
    osascript - <<EOC
 tell application "System Preferences"
    activate
    set the current pane to pane id "com.apple.preference.keyboard"
    reveal anchor "Text" of pane id "com.apple.preference.keyboard"
    quit
end tell
EOC

}

# Main
case "$1" in
-b)  Backup
     ;;
-r)  Restore
    ;;
 *) echo "Usage: $0 -b|-r"
    echo "\t\t-b: backup"
    echo "\t\t-r: restore"
    exit 0
    ;;
esac
    
respondido por el fuzzy 04.12.2014 - 16:30

Lea otras preguntas en las etiquetas