Le associazioni di tasti TextEdit modificate in DefaultKeyBinding.dict hanno smesso di funzionare


5

Ho personalizzato i collegamenti alla modifica del testo in ~ / Library / KeyBindings / DefaultKeyBinding.dict ma tutti hanno smesso di funzionare in TextEdit.app quando sono passato a Lion. Funzionano ancora bene in altre app Cocoa come Safari.

I collegamenti predefiniti di sistema come ^Fper moveForward:il lavoro come al solito.

Qualcun altro che utilizza DefaultKeyBinding.dict l'ha notato? Esiste un modo per risolverlo o qualsiasi altro modo di personalizzare i collegamenti chiave in TextEdit?


2
Le combinazioni di tasti personalizzate funzionano normalmente per me in TextEdit. Hai provato a sostituire DefaultKeyBinding.dict con qualcosa del genere {"a"=(insertText:,"test");}?
Lri,

@LauriRanta grazie; sapendo che ero l'unico ad avere il problema, mi è stato finalmente permesso di investigarlo correttamente.
Mckeed,

Risposte:


8

Il problema era che avevo spostato il file DefaultKeyBinding.dict effettivo da qualche altra parte a scopo 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 le associazioni di tasti) devono fare qualcosa di diverso e non l'hanno visto.

Quindi, oops, lezione imparata. Non collegare in modo simbolico i file di configurazione del sistema.


Grazie a fcuk per la tua risposta. Stavo reinstallando completamente il mio account utente perché pensavo che Pages / Keynote avesse alcune impostazioni utente nascoste che li tenevano bloccati su una versione precedente di DefaultKeyBinding.dict . Come te, ho controllato la versione dopo quella modifica. Devo ancora controllare la versione delle impostazioni del mio account utente, che sono distribuite in directory e file in my ~/ home. Sembrava che la risposta fosse un collegamento simbolico ai file in un progetto di impostazione degli utenti. Invece controllerò la versione di tutta la mia casa, .gitignore tutti i file per impostazione predefinita e inserirò nella whitelist i file desiderati.
Riaz Rizvi,

1

Ho avuto lo stesso problema con il collegamento simbolico di questo file, ma non volevo arrendermi a questa limitazione, quindi ho creato un pre-commithook git per aggiornare ~ / Library / KeyBindings / DefaultKeyBinding.dict ogni volta che la mia versione era impegnata.

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 usarlo tutto ciò che devi fare è sostituire FILE_PATH_IN_SCM=${BASE_DIR}/.configurations/DefaultKeyBinding.dictcon la posizione del file nel tuo repository Git.

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

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

Non dimenticare di correre chmod +x <your-git-repo>/.git/hooks/pre-commitper renderlo eseguibile.

Successivamente ogni commit che coinvolge questo file mostrerà qualcosa del tipo:

The file </Users/myuser/.scripts/.configurations/DefaultKeyBinding.dict> was modified, updating /Users/myuser/Library/KeyBindings/DefaultKeyBinding.dict
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.