Come posso migrare tutte le scorciatoie da tastiera da un mac a un altro?


11

Ho molte scorciatoie da tastiera personalizzate e saranno i Mac di migrazione. Ho testato Migration Assistant e non mi sembra di averli.

Ho letto da qualche parte che sono memorizzati nei file plist della singola applicazione nella ~/Library/Application Supportcartella, ma anche dopo aver copiato alcune di queste cartelle tramite i collegamenti non sembrano seguire.

Come posso migrare tutte le scorciatoie da tastiera su un nuovo mac?

screenshot-con-shadow.png

Risposte:


13

I collegamenti che possono essere modificati dalla scheda Collegamenti alle applicazioni sono memorizzati negli ~/Library/Preferences/.GlobalPreferences.pliste negli elenchi delle proprietà delle applicazioni in ~/Library/Preferences/*.pliste ~/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";
    };
}

In realtà utilizzo uno script di shell come questo per configurare le scorciatoie:

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";
}'

Le stringhe di scelta rapida utilizzano lo stesso formato di DefaultKeyBinding.dict . È possibile rimuovere un collegamento assegnando una voce di menu a \1. Se si assegna una voce di menu nil, viene attivata quando si preme n in alcune applicazioni come Audacity. Se si assegna una voce di menu a \0, questa viene attivata quando si preme un tasto qualsiasi in Safari in 10.9.

Si noti che le preferenze sono memorizzate nella cache in Mavericks. Le modifiche apportate con le impostazioni predefinite vengono comunque applicate dopo aver appena chiuso e riaperto un'applicazione. Ma se modifichi direttamente un plist o lo sostituisci, devi anche eseguire killall cfprefsdo defaults read /path/to/plist.


9

Grazie alla risposta esistente, ho creato uno script che salverà le scorciatoie in uno script da eseguire su altre macchine.

#!/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

Salvalo in un file chiamato save-hotkeys.shed eseguilo eseguendolo sh save-hotkeys.sh. Sul computer remoto, eseguire ./install-hotkeys.shmentre si trova nella stessa directory del file. Nel mio esempio, salvo il file in dropbox in modo che sia sincronizzato con le altre mie macchine.


Ciao Alan, è grandioso. Come si esegue quello script? Salvalo in un file? Quale estensione dovrebbe essere? Eseguirlo facendo doppio clic sul file?
kiwi arrabbiato,

Aggiunte alcune spiegazioni su come usarlo.
Alan Shutko,

@ Alan Shutko, ho riscontrato questo errore quando eseguo i tasti di scelta rapida di salvataggio: Af-MacBook-Pro: HD 2 af $ sh save-hotkeys.sh save-hotkeys.sh: riga 5: / Users / Af / Dropbox / install -hotkeys.sh: nessun file o directory del genere
kiwi arrabbiato,

Ciao Alan, qualche aggiornamento?
kiwi arrabbiato,

1
Non funziona per me il 10.15.2 Catalina, dopo aver eseguito il file, riporta: Unexpected argument NSUserKeyEquivalents; leaving defaults unchanged.
Siniša Šašić
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.