Sur mon MacBook Pro exécutant OS X Lion 10.7.4, il semble y avoir un problème de clavier. J'ai remarqué ce problème pour la première fois lorsque j'ai essayé d'utiliser le raccourci clavier par défaut pour exécuter les commandes suivantes mark-sexp
y query-replace-regexp
dans emacs, qui sont liés respectivement à C-M-@
y C-M-%
par défaut. Comme j'utilise beaucoup emacs, ces deux puissantes fonctionnalités me manquent vraiment beaucoup.
Comme je n'ai pas d'expérience dans l'utilisation des types de terminaux, j'ai fait un débogage simple dans emacs :
-
C-M-f
yC-M-b
fonctionnent comme prévu. Le contrôle et l'option fonctionnent donc bien ensemble. -
M-%
,M-<
yM->
fonctionnent comme prévu. Ainsi, l'option et le changement fonctionnent bien ensemble. -
C-S-backspace
ne fonctionne pas. (Mais je n'ai jamais essayé cette commande auparavant ; la première fois que je l'ai exécutée, c'est aujourd'hui, lorsque je l'ai trouvée dans le manuel d'emacs). MaisC-@
fonctionne comme prévu. Donc le contrôle et le changement de vitesse fonctionnent probablement bien ensemble. - Si je ne me trompe pas, la commande
digit-argument
est lié àC-9
,C-8
etc. Ces clés ne fonctionnent pas aussi bien. Je me suis assuré que dans System Preferences.app j'ai désactivé ces touches pour changer d'espace.
Dans les préférences de Terminal.app, j'ai sélectionné "utiliser l'option comme méta-touche" car cela facilite la saisie des raccourcis clavier emacs. J'ai également essayé de désactiver cette option et d'utiliser la touche ESC mais toujours sans succès. Avez-vous une idée ?
P.S. J'ai lancé X11.app et dans la fenêtre xterm j'ai lancé emacs. En utilisant ESC comme méta, C-M-%
y C-M-@
fonctionnent parfaitement. Dans la version Cocoa d'Emacs, les deux fonctionnent parfaitement aussi. Je suppose donc qu'il s'agit d'un bug de Terminal.app ou qu'il y a peut-être un paramètre ou un commutateur de configuration que je peux modifier pour que cela fonctionne dans Terminal.app ?
Et voici la sortie de stty -a
à partir du shell emacs, en espérant que cela soit 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$
La même commande directement depuis le 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;
$
(Commentaire annexe : Il semble étrange que la syntaxe pour un bloc de code soit quatre espaces précédents. Est-ce que tous les utilisateurs de StackExchange sont censés savoir comment utiliser le langage paste(1)
, sed(1)
ou des modifications de rectangle)