Un terminal texte ne transmet que des caractères (plus précisément, des octets), pas des clés. Les clés et les accords (clés avec modificateurs) sont codés sous forme de séquences de caractères. Les clés qui insèrent des caractères imprimables sont envoyées comme elles-mêmes; les touches de fonction sont envoyées sous forme de séquences d'échappement. La plupart des séquences d'échappement se composent du caractère Escape ( ?\e
dans la syntaxe Emacs) suivi de deux caractères imprimables ou plus. Voir les touches Contrôle et haut / bas dans le terminal pour une utilisation par emacs et Comment fonctionnent la saisie au clavier et la sortie du texte? pour plus d'informations.
Emacs dispose d'un mécanisme pour traduire les séquences d'échappement en sa propre notion de clés. La table de traduction input-decode-map
est initialisée au démarrage d'Emacs (ou plus précisément, lorsqu'une nouvelle trame est ouverte: cette variable a une valeur différente sur chaque terminal). Parfois, Emacs ne connaît pas toutes les séquences d'échappement envoyées par le terminal.
Dans votre cas, il semble qu'Emacs ait une mauvaise interprétation de la séquence d'échappement envoyée par Shift+ Up. Vous devez lui dire de l'interpréter S-up
plutôt que select
. Tout d'abord, déterminez quelle est la séquence d'échappement. Dans le *scratch*
tampon, appuyez sur Ctrl+ Qpuis Shift+ Up. La commande C-q
provoque l'insertion littérale du caractère suivant, qui est le caractère d'échappement, suivi du reste de la séquence d'échappement. Disons que Shift+ Upenvoie \e[1;2A
sur notre système, alors vous devrez redéfinir l'entrée correspondante dans input-mode-map
:
(define-key input-decode-map "\e[1;2A" [S-up])
En principe, input-decode-map
doit être défini par terminal. En pratique, il est très rare d'avoir deux terminaux dans lesquels la même séquence d'échappement encode des clés différentes, donc un paramètre global fonctionnera correctement.
Are the (define-key ...)
commandes censées entrer dans init.el? Y a-t-il un exemple détaillé quelque part que je peux regarder?define-key
commandes @vfclists vont dans votre fichier init. Cela peut être~/.emacs.d/init.el
ou quelques autres emplacements. Vous trouverez de nombreux exemples d'utilisations dedefine-key
en recherchantdefine-key
, mais trouver la carte à lier est une autre affaire. Plusieurs cartes sont impliqués:global-map
,input-decode-map
,function-key-map
,keyboard-translate-map
. Je ne sais pas comment répondre à votre question car je ne connais pas Spacemacs. Je ne recommande pas l'utilisation de packages tels que Spacemacs qui redéfinissent malencontreusement les interfaces standard.input-decode-map
après avoir trouvé quelques exemples. Puis-je prendre celui quiinput-decode-map
s'applique lorsque l'utilisateur entre du texte dans un tampon?input-decode-map
est l'un des keymaps qui s'appliquent. Voir le manuel pour plus de détails.Dans emacs, la région est délimitée par le point (curseur) et la marque (une position précédente du curseur, qui a été "marquée").
Ainsi, pour "sélectionner une région", vous devez placer cette marque, puis déplacer votre point.
Le moyen le plus simple de placer la marque est d'appuyer sur
C-SPC
. Ensuite, déplacez simplement le curseur, vous verrez la "région" s'étendre au fur et à mesure.Pour "désélectionner la région", vous pouvez appuyer à
C-SPC
nouveau sur.Étant donné que «Maj + mouvement» est une liaison de touches commune dans d'autres logiciels, par défaut, il émule ce comportement de «sélection de région». Cependant, cela ne fonctionne pas dans le terminal, car shift ne peut pas être envoyé à emacs comme touche de modification.
Notez que généralement, la
C-SPC
méthode est beaucoup plus puissante que les autres méthodes pour sélectionner une région: vous n'êtes pas limité à haut / bas / gauche / droite pour le mouvement (vous pouvez utiliser la recherche par exemple ...), et elle ne nécessite pas que vous maintenez une combinaison de touches inconfortable pendant longtemps.la source