command-backspace cancella un'intera riga. C'è un modo per disabilitare questo?

6

Quando digito il comando backspace in un campo di testo Cocoa, cancella tutto dall'inizio della riga corrente fino al punto del cursore. Può essere disabilitato? Mi sta facendo impazzire perché l'ho colpito tutto il tempo per caso.

Ho provato ad aggiungere quanto segue a ~/Library/KeyBindings/DefaultKeyBinding.dict :

<key>@0</key><!-- cmd-backspace -->
<string>deleteWordBackward:</string>

o

<key>@7</key><!-- cmd-delete -->
<string>deleteWordBackward:</string>

o

<key>@\U007F</key><!-- cmd-backspace -->
<string>deleteWordBackward:</string>

... tutto senza alcun effetto apparente. Non riesco a capire se ricevo il codice di accesso per backspace / delete errato o se ho torto che @ è la chiave di comando o se qualcos'altro è sbagliato.

Finalmente - ed esisto a dirlo a causa della fonte, ma è solo l'unico indizio che ho - qualche commentatore casuale su questo post del blog correlato a TextMate dice:

unfortunately most of the key combinations which include the command modifier never reach the control which have focus (they're eaten by the menu manager code).

So these bindings generally do not work :(

I go through hoops to get as many keys as I currently do in TextMate, and here I still can't get command backward delete (⌘⌫).

C'è qualcos'altro che posso provare?

Modifica: mi sono reso conto di aver incollato le informazioni errate come le configurazioni che ho provato. Se noti dei cambiamenti lassù, sto cambiando la domanda in modo che corrisponda a quello che ho effettivamente fatto. Il comportamento non è cambiato:).

    
posta Micah R Ledbetter 14.09.2011 - 21:25
fonte

2 risposte

4

Rendi il contenuto della tua ~/Library/KeyBindings/DefaultKeyBinding.dict simile al testo qui sotto

/* my keybindings */

{
"@\U007F" = "deleteWordBackward:"; /* delete backwards one word */
}  
  • '@' rappresenta il comando
  • '\ U007F' rappresenta il tasto cancella
  • 'deleteWordBackward' è una parola chiave che le applicazioni Cocoa capiscono

Una volta riavviata qualsiasi app Cocoa, questa operazione eliminerà solo una parola a sinistra del cursore invece di tutto tra l'inizio della linea e il cursore.

    
risposta data 14.09.2011 - 21:46
fonte
2

\U007f e 7 sono specifici degli elenchi di proprietà vecchio stile. Sui plists XML è necessario utilizzare &#x007f; o% letterale% co_de:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>@&#x007f;</key>
    <string>noop:</string>
</dict>
</plist>
    
risposta data 12.12.2011 - 18:06
fonte

Leggi altre domande sui tag