Jak mogę przenieść wszystkie skróty klawiaturowe z jednego komputera Mac na inny?

8

Mam wiele niestandardowych skrótów klawiaturowych i będę migrował komputery Mac. Przetestowałem Asystenta migracji i wydaje się, że go nie otrzymałem.

Czytałem gdzieś, że są one przechowywane w plikach list poszczególnych aplikacji w ~/Library/Application Supportfolderze, ale nawet po skopiowaniu kilku z tych folderów za pomocą skrótów wydaje się, że nie nadążają.

Jak mogę przenieść wszystkie skróty klawiaturowe na nowy komputer Mac?

screenshot-with-shadow.png

cwd
źródło

Odpowiedzi:

9

Skróty, które można zmienić na karcie Skróty aplikacji, są przechowywane w ~/Library/Preferences/.GlobalPreferences.plistlistach właściwości aplikacji w ~/Library/Preferences/*.plisti ~/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";
    };
}

Właściwie używam takiego skryptu powłoki, aby skonfigurować skróty:

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

Ciągi skrótów używają tego samego formatu, co w DefaultKeyBinding.dict . Możesz usunąć skrót, przypisując element menu do \1. Jeśli przypiszesz element menu nil, zostanie on uruchomiony po naciśnięciu nw niektórych aplikacjach, takich jak Audacity. Jeśli przypiszesz element menu do \0, zostanie on uruchomiony po naciśnięciu dowolnego klawisza w przeglądarce Safari w wersji 10.9.

Pamiętaj, że preferencje są buforowane w Mavericks. Zmiany wprowadzone w ustawieniach domyślnych są nadal stosowane po zamknięciu i ponownym otwarciu aplikacji. Ale jeśli edytujesz listę bezpośrednio lub wymienisz ją, musisz również uruchomić killall cfprefsdlub defaults read /path/to/plist.

Lri
źródło
5

Dzięki istniejącej odpowiedzi zbudowałem skrypt, który zapisze skróty w skrypcie, który będzie uruchamiany na innych komputerach.

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

DESTFILE=~/Dropbox/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

Zapisz to w pliku o nazwie save-hotkeys.shi uruchom go, uruchamiając sh save-hotkeys.sh. Na zdalnym komputerze uruchom go, ./install-hotkeys.shbędąc w tym samym katalogu co plik. W moim przykładzie zapisuję plik w Dropbox, aby zsynchronizować go z innymi komputerami.

Alan Shutko
źródło
Cześć Alan, to świetnie. Jak uruchomić ten skrypt? Zapisać w pliku? Jakie powinno być rozszerzenie? Uruchomić, klikając dwukrotnie plik?
zły kiwi
Dodano wyjaśnienie, jak z niego korzystać.
Alan Shutko
@ Alan Shutko, dostaję ten błąd, gdy wykonuję skróty klawiszowe: Af-MacBook-Pro: HD 2 af $ sh save-hotkeys.sh save-hotkeys.sh: wiersz 5: / Users / Af / Dropbox / install -hotkeys.sh: Brak takiego pliku lub katalogu
zły kiwi
Cześć Alan, jakaś aktualizacja?
zły kiwi
@runrunforest: Twój skrypt powłoki nie powiódł się, ponieważ nie ~/Dropboxutworzono katalogu.
dan