I binding dei tasti TextEdit modificati in DefaultKeyBinding.dict hanno smesso di funzionare

5

Ho personalizzato i collegamenti per la modifica del testo in ~ / Library / KeyBindings / DefaultKeyBinding.dict ma tutti hanno smesso di funzionare in TextEdit.app quando ho eseguito l'aggiornamento a Lion. Funzionano ancora bene con altre app Cocoa come Safari.

I collegamenti predefiniti del sistema come ^ F per moveForward: funzionano come al solito.

Qualcun altro che usa DefaultKeyBinding.dict ha notato questo? C'è un modo per risolvere il problema o qualsiasi altro modo di personalizzare i collegamenti dei tasti in TextEdit?

    
posta mckeed 07.06.2012 - 00:31
fonte

2 risposte

8

Il problema era che avevo spostato il vero file DefaultKeyBinding.dict da qualche altra parte per scopi di controllo della versione e collegato ad esso.

La maggior parte delle app stava caricando il file tramite il collegamento simbolico, ma TextEdit (e, a quanto pare, un paio di altre app che pensavo non supportassero i collegamenti chiave) deve fare qualcosa di diverso e non vederlo.

Quindi, oops, lezione appresa. Non collegare simbolicamente i file di configurazione del sistema.

    
risposta data 07.06.2012 - 16:39
fonte
1

Avevo lo stesso problema con il collegamento simbolico di questo file, ma non volevo arrendermi a questa limitazione, quindi ho creato un hook git pre-commit per aggiornare ~ / Library / KeyBindings / DefaultKeyBinding.dict ogni volta che la mia versione è stato commesso.

Ecco il codice (per Git):

#!/bin/bash


if [[ $(git diff --cached --name-only | grep '.configurations/DefaultKeyBinding.dict' | wc -l) -eq 1 ]]; 

then
   FILE_PATH_IN_LIBRARY=~/Library/KeyBindings/DefaultKeyBinding.dict
   BASE_DIR=$(git rev-parse --show-toplevel)
   FILE_PATH_IN_SCM=${BASE_DIR}/.configurations/DefaultKeyBinding.dict

   NORMAL=$(tput sgr0)
   BRIGHT=$(tput bold)
   GREEN=$(tput setaf 2)

   printf "${BRIGHT}${GREEN}The file <%s> was modified, updating %s${NORMAL}\n" $FILE_PATH_IN_SCM $FILE_PATH_IN_LIBRARY

   cp $FILE_PATH_IN_SCM $FILE_PATH_IN_LIBRARY
fi

Per utilizzarlo tutto ciò che devi fare è sostituire FILE_PATH_IN_SCM=${BASE_DIR}/.configurations/DefaultKeyBinding.dict con il percorso del file nel tuo repository Git.

Se non hai mai creato un hook git prima (questo era il mio primo) - devi inserire questo codice in:

<your-git-repo>/.git/hooks/pre-commit

Non dimenticare di eseguire chmod +x <your-git-repo>/.git/hooks/pre-commit per renderlo eseguibile.

Successivamente ogni commit che coinvolge questo file mostrerà qualcosa come:

The file </Users/myuser/.scripts/.configurations/DefaultKeyBinding.dict> was modified, updating /Users/myuser/Library/KeyBindings/DefaultKeyBinding.dict
    
risposta data 19.01.2016 - 17:00
fonte

Leggi altre domande sui tag