¿Cómo puedo migrar todos los atajos de teclado de una Mac a otra?

11

Tengo muchos atajos de teclado personalizados y seré Mac de migración. Probé el Asistente de migración y no pareció obtenerlos.

Leí en alguna parte que están almacenados en los archivos plist de la aplicación individual en la ~/Library/Application Supportcarpeta, pero incluso después de copiar algunas de estas carpetas en los accesos directos no parecen seguir.

¿Cómo puedo migrar todos los atajos de teclado a una nueva Mac?

screenshot-with-shadow.png

cwd
fuente

Respuestas:

13

Los accesos directos que se pueden cambiar desde la pestaña Accesos directos a aplicaciones se almacenan en ~/Library/Preferences/.GlobalPreferences.plisty en las listas de propiedades de las aplicaciones en ~/Library/Preferences/*.plisty ~/Library/Containers/*/Data/Library/Preferences/*.plist.

$ defaults find NSUserKeyEquivalents
Found 1 keys in domain 'Apple Global Domain': {
    NSUserKeyEquivalents =     {
        "Actual Size" = "@0";
        "Automatic Fit" = "@9";
        "Automatically Resize" = "@9";
        "Browse All Versions..." = "^@v";
        "Decrease Indent Level" = "^\\Uf702";
        "Decrease Level" = "^\\Uf702";
        "Decrease Paragraph Indent" = "^\\Uf702";
        "Enter Full Screen" = "^@f";
        "Enter Full Screen Mode" = "^@f";
        "Exit Full Screen" = "^@f";
        "Exit Full Screen Mode" = "^@f";
        "Find Next" = "@g";
        "Find Previous" = "$@g";
        "Find and Replace..." = "~@f";
        "Full Screen" = "^@f";
        Fullscreen = "^@f";
        "Increase Indent Level" = "^\\Uf703";
        "Increase Level" = "^\\Uf703";
        "Increase Paragraph Indent" = "^\\Uf703";
        "Line Spacing..." = "~@l";
        Minimize = "\001";
        "Minimize All" = "\001";
        "Move Line Down" = "^\\Uf701";
        "Move Line Up" = "^\\Uf700";
        "Next Tab" = "~@\\Uf703";
        "Next Workspace" = "~@\\Uf703";
        "Normal Screen" = "^@f";
        "Original Size" = "@0";
        "Previous Tab" = "~@\\Uf702";
        "Previous Workspace" = "~@\\Uf702";
        "Remove Full Screen" = "^@f";
        Reveal = "$@r";
        "Select Next Tab" = "~@\\Uf703";
        "Select Next Tab View" = "~@\\Uf703";
        "Select Previous Tab" = "~@\\Uf702";
        "Select Previous Tab View" = "~@\\Uf702";
        "Shift Down" = "^\\Uf701";
        "Shift Left" = "^\\Uf702";
        "Shift Right" = "^\\Uf703";
        "Shift Up" = "^\\Uf700";
        "Show Next Tab" = "~@\\Uf703";
        "Show Previous Tab" = "~@\\Uf702";
        "Show in Finder" = "$@r";
        "Toggle Full Screen" = "^@f";
        "Use Selection for Find" = "@e";
        "Zoom Reset" = "@0";
        "Zoom to Fit" = "@9";
    };
}
Found 1 keys in domain 'com.panic.Transmit': {
    NSUserKeyEquivalents =     {
        "Hide Invisible Files" = "$@.";
        Refresh = "@r";
        "Show Invisible Files" = "$@.";
        "Synchronize..." = "$@y";
    };
}
Found 1 keys in domain 'net.sourceforge.skim-app.skim': {
    NSUserKeyEquivalents =     {
        Crop = "@k";
        "Single Page" = "$@1";
        "Single Page Continuous" = "$@0";
        "Two Pages" = "$@2";
    };
}
Found 1 keys in domain 'com.googlecode.iterm2': {
    NSUserKeyEquivalents =     {
        "Next Pane" = "@\\Uf703";
        "Open Autocomplete..." = "@;";
        "Previous Pane" = "@\\Uf702";
        "Select Pane Above" = "@\\Uf700";
        "Select Pane Below" = "@\\Uf701";
    };
}
Found 1 keys in domain 'net.notational.velocity': {
    NSUserKeyEquivalents =     {
        Bold = "\001";
        Delete = "$@d";
        Italic = "\001";
        "Plain Text Style" = "\001";
        Strikethrough = "\001";
    };
}
Found 1 keys in domain 'com.apple.Safari': {
    NSUserKeyEquivalents =     {
        "Mail Contents of This Page" = "\001";
        "Reopen All Windows from Last Session" = "~$@r";
        "Reopen Last Closed Window" = "~@r";
    };
}
Found 1 keys in domain 'com.hogbaysoftware.WriteRoom.mac': {
    NSUserKeyEquivalents =     {
        "Column 120" = "$@7";
        "Column 200" = "$@8";
        "Column 40" = "$@1";
        "Column 50" = "$@2";
        "Column 60" = "$@3";
        "Column 66" = "$@4";
        "Column 80" = "$@5";
        "Column 90" = "$@6";
        "Column Window Width" = "$@0";
        "Enter Full Screen" = "$@f";
        "Enter Full Screen Single" = "^@f";
        "Exit Full Screen" = "$@f";
        "Exit Full Screen Single" = "^@f";
    };
}

De hecho, uso un script de shell como este para configurar los accesos directos:

defaults write -g NSUserKeyEquivalents '{
"Browse All Versions..." = "^@v";
"Minimize" = "\1";
"Minimize All" = "\1";
"Show Previous Tab" = "~@\Uf702";
"Show Next Tab" = "~@\Uf703";
}'

defaults write -app Safari NSUserKeyEquivalents '{
"Reopen Last Closed Window" = "~@r";
"Reopen All Windows from Last Session" = "~$@r";
"Mail Contents of This Page" = "\1";
}'

Las cadenas de acceso directo usan el mismo formato que en DefaultKeyBinding.dict . Puede eliminar un acceso directo asignando un elemento de menú a \1. Si asigna un elemento de menú a nil, se activa cuando presiona n en algunas aplicaciones como Audacity. Si asigna un elemento de menú a \0, se activa cuando presiona cualquier tecla en Safari en 10.9.

Tenga en cuenta que las preferencias se almacenan en caché en Mavericks. Los cambios realizados con los valores predeterminados todavía se aplican después de que acaba de cerrar y volver a abrir una aplicación. Pero si edita un plist directamente o lo reemplaza, también debe ejecutar killall cfprefsdo defaults read /path/to/plist.

Lri
fuente
9

Gracias a la respuesta existente, he creado un script que guardará los accesos directos en un script que se ejecutará en otras máquinas.

#!/bin/sh
# save-hotkeys.sh

DESTFILE=~/install-hotkeys.sh
echo '#!/bin/bash' > $DESTFILE

defaults find NSUserKeyEquivalents | sed -e "s/Found [0-9]* keys in domain '\\([^']*\\)':/defaults write \\1 NSUserKeyEquivalents '/" -e "s/    NSUserKeyEquivalents =     {//"  -e "s/};//" -e "s/}/}'/" >> $DESTFILE
echo killall cfprefsd >> $DESTFILE
chmod a+x $DESTFILE

Guarde esto en un archivo llamado save-hotkeys.shy ejecútelo ejecutando sh save-hotkeys.sh. En la máquina remota, ejecute ./install-hotkeys.shmientras está en el mismo directorio que el archivo. En mi ejemplo, guardo el archivo en Dropbox para que se sincronice con mis otras máquinas.

Alan Shutko
fuente
Hola Alan, eso es genial. ¿Cómo ejecutar ese script? ¿Guardarlo en un archivo? ¿Qué extensión debería ser? Ejecutar haciendo doble clic en el archivo?
Kiwi enojado
Se agregó alguna explicación sobre cómo usarlo.
Alan Shutko
@ Alan Shutko, recibí este error cuando ejecuto las teclas de acceso rápido save: Af-MacBook-Pro: HD 2 af $ sh save-hotkeys.sh save-hotkeys.sh: línea 5: / Users / Af / Dropbox / install -hotkeys.sh: No existe tal archivo o directorio
angry kiwi
Hola Alan, ¿alguna actualización?
Kiwi enojado
1
No me funciona el 10.15.2 Catalina, después de ejecutar el archivo, informa: Unexpected argument NSUserKeyEquivalents; leaving defaults unchanged.
Siniša Šašić