La valeur par défaut de la liaison de clé C-a/C-e
n'est que pour une chose, déplacez-vous au début / à la fin de la ligne, y a-t-il un paquet qui peut faire en sorte qu'Emacs agisse comme ceci:
- Si je ne suis pas à la fin d'une ligne,
C-e
ira à la fin de la ligne, sinon, allez à la fin de la ligne suivante - Si je ne suis pas au début d'une ligne,
C-a
ira au début de la ligne, sinon passez au début de la ligne suivante.
Le fait est que vous pouvez simplement continuer à frapper C-a/e
pour aller au début / à la fin de chaque ligne sans déplacer votre doigt pour l'atteindre C-n/p
.
Et avec un préfixe ( C-u
), ils iront au début / fin de la ligne dans la direction opposée.
key-bindings
line-break
motion
CodyChan
la source
la source
C-a
monter "etC-e
descendre"? En d'autres termes, la signification de «ligne suivante» est-elle la même aux points 1 et 2?C-a
monter etC-e
descendre" lorsque j'ai posté cette question, mais j'ai pensé que si quelqu'un donnait unedefun
solution comme vous, n'importe qui saurait quoi faire s'il aimeC-a
"monter" ..Réponses:
Je ne connais pas de package qui permettrait ce comportement, mais voici une façon de le faire.
Appuyez
C-h k C-a
pour découvrir ce quiC-a
est lié àmove-beginning-of-line
; c'est la fonction que nous devons modifier --- ou simplement utiliser pour implémenter la partie "passer au début". De même, avecC-h k
je peux trouverforward-line
, qui sera utilisé pour monter / descendre.Pour pouvoir lier une fonction à une clé, nous devons en faire une commande , nous devons donc utiliser le
interactive
formulaire spécial (voir Utilisation d'Interactive ). Pour prendre l'C-u
argument préfixe, nous avons besoin du"P"
caractère de code.En combinant cela avec
bolp
(vérifier si au début d'une ligne) eteolp
(vérifier si à la fin d'une ligne), nous pouvons écrire:Maintenant, nous pouvons réaffecter
C-a
etC-e
les appeler:Alternativement, on pourrait ajouter des conseils à
move-beginning-of-line
etmove-end-of-line
.la source
my-move-beginning-of-line
fonction .. Doit-elle être(previous-line (if arg -1 1))
ou(forward-line (if arg 1 -1))
(1 et -1 commutée)?C-a
ouC-e
.C-a
"monter".La bibliothèque
misc-cmds.el
possède depuis longtemps cette fonctionnalité.Ce sont les commandes pertinentes et les raccourcis clavier suggérés (ces liens sont créés en
setup-keys.el
).Voici ce que
C-h f end-of-line+
dit, à titre d'exemple:la source
Les deux fonctions suivantes exécutent les actions souhaitées.
la source