Sul mio MacBook Pro con OS X Lion 10.7.4 sembra esserci un problema di tastiera. Ho notato questo problema per la prima volta quando ho provato a utilizzare la combinazione di tasti predefinita per eseguire mark-sexp
e query-replace-regexp
in emacs, che sono rispettivamente associati a C-M-@
e C-M-%
per impostazione predefinita. Poiché uso molto emacs, mi mancano molto queste due potenti funzionalità.
Dato che non ho esperienza con i tipi di terminale ecc, ho fatto un semplice debugging in emacs:
-
C-M-f
eC-M-b
funzionano come previsto. Quindi il controllo e l'opzione funzionano bene insieme. -
M-%
,M-<
eM->
funzionano come previsto. Quindi l'opzione e il turno funzionano bene insieme. -
C-S-backspace
non funziona. (Ma non ho mai provato questo comando prima: la prima volta che l'ho eseguito era oggi quando l'ho trovato nel manuale di emacs.) MaC-@
funziona come previsto. Quindi il controllo e lo spostamento probabilmente funzionano bene insieme. - Se non sbaglio, il comando
digit-argument
è associato aC-9
,C-8
, ecc. Queste chiavi non funzionano altrettanto bene. Mi sono assicurato che in System Preferences.app ho spento queste chiavi per cambiare spazio.
Nelle preferenze di Terminal.app, ho selezionato "use option come meta key" perché facilita la digitazione dei tasti di emacs. Ho anche provato a disabilitare questa opzione e usare ESC ma ancora inutilmente. Qualche idea?
P.S. Ho lanciato X11.app e nella finestra di xterm ho avviato emacs. Usando ESC come meta, C-M-%
e C-M-@
funzionano perfettamente. Nella versione Cocoa di Emacs, anche questi due funzionano perfettamente. Quindi penso che sia un bug di Terminal.app o probabilmente ci potrebbe essere un settaggio o un interruttore di configurazione che posso modificare per farlo funzionare in Terminal.app?
Ed ecco l'output di stty -a
dalla shell di emacs, si spera sia utile ...
bash-3.2$ stty -a
speed 9600 baud; 0 rows; 0 columns;
lflags: icanon isig iexten -echo echoe -echok echoke -echonl echoctl
-echoprt -altwerase -noflsh -tostop -flusho -pendin -nokerninfo
-extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel -iutf8
-ignbrk brkint -inpck -ignpar -parmrk
oflags: opost -onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
-dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
eol2 = <undef>; erase = <undef>; intr = ^C; kill = <undef>;
lnext = ^V; min = 1; quit = ^\; reprint = ^R; start = ^Q;
status = ^T; stop = ^S; susp = ^Z; time = 0; werase = ^W;
bash-3.2$
Lo stesso comando direttamente dalla shell:
$ stty -a
speed 9600 baud; 24 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
-echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
-extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel iutf8
-ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
-dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
stop = ^S; susp = ^Z; time = 0; werase = ^W;
$
(Commento laterale: sembra strano che la sintassi per un blocco di codice sia di quattro spazi precedenti. Tutti gli utenti di StackExchange si aspettano di sapere come utilizzare paste(1)
, sed(1)
o modifiche rettangolari?)