En mi MacBook Pro con OS X Lion 10.7.4, parece que hay un problema con el teclado. Noté este problema por primera vez cuando intenté usar la combinación de teclas predeterminada para ejecutar mark-sexp
y query-replace-regexp
en emacs, que están vinculados respectivamente a C-M-@
y C-M-%
de forma predeterminada. Como uso mucho emacs, realmente extraño mucho estas dos funciones poderosas.
Como no tengo experiencia en el manejo de tipos de terminales, etc., realicé algunas tareas de depuración simples en emacs:
-
C-M-f
yC-M-b
funcionan como se esperaba. Así que el control y la opción funcionan bien juntos. -
M-%
,M-<
yM->
funcionan como se esperaba. Así que la opción y el turno funcionan bien juntos. -
C-S-backspace
no funciona. (Pero nunca he probado este comando antes; la primera vez que lo ejecuté fue hoy cuando lo encontré en el manual de emacs). PeroC-@
funciona como se esperaba. Por lo tanto, el control y el cambio probablemente funcionen bien juntos. - Si no me equivoco, el comando
digit-argument
está vinculado aC-9
,C-8
, etc. Estas teclas no funcionan tan bien. Me he asegurado de que en System Preferences.app he desactivado estas teclas para cambiar de espacio.
En las preferencias de Terminal.app, seleccioné "use option as meta key" ya que facilita la escritura de las combinaciones de teclas de Emacs. También intenté deshabilitar esta opción y usar ESC pero aún no he tenido éxito. ¿Alguna idea?
P.S. Lancé X11.app y en la ventana de xterm comencé emacs. Usando ESC como meta, C-M-%
y C-M-@
funcionan perfectamente. En la versión Cocoa de Emacs, estos dos también funcionan perfectamente. Entonces, ¿supongo que es un error de Terminal.app o probablemente haya un cambio de configuración o configuración que pueda modificar para que funcione en Terminal.app?
Y aquí está la salida de stty -a
de emacs shell, espero que sea útil ...
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$
El mismo comando directamente desde el 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;
$
(Comentario lateral: parece extraño que la sintaxis de un bloque de código sea cuatro espacios anteriores. ¿Se espera que todos los usuarios de StackExchange sepan cómo usar paste(1)
, sed(1)
o ediciones de rectángulo?)