Je ne sais pas s'il y a quelque chose qui ne va pas avec mes paramètres, mais quand j'appuie sur M-F (en avant un mot) Peu importe où je suis, il ne place jamais le curseur dans le mot suivant (juste entre les mots). Cela n'arrive pas avec M-B qui placez mon curseur au début du mot précédent. P>
Est-ce un comportement normal? Comment placer mon curseur au début du mot suivant? P>
6 Réponses :
C'est un comportement correct. Selon le manuel de l'EMACS , "[F] Orbord Motion s'arrête juste après la dernière lettre du mot, tandis que le mouvement en retard s'arrête juste avant la première lettre. " P>
Pourquoi est-ce de cette façon? Peut-être être cohérent avec Kill-Word (M-D). P>
Ok, juste pour que ce soit clair, Im va supposer que vous parlez des commandes forward-word strong> et en arrière-mot strong> ceux-ci sont liés par défaut à < KBD> Alt kbd> + f kbd> et Alt kbd> + b kbd> p>
string par exemple: "Bonjour dolly Je suis ici" p>
Si le curseur est sur le « H » de « Bonjour », et vous faites forward-word strong> le curseur se déplace à l'espace entre « Bonjour » et « dolly », mais il semble que vous voulez que le curseur soit sur la lettre « d » de « dolly » au lieu de en face. p>
Alors, faites-en avant-mot deux fois, puis mot en arrière une fois. P>
Cela va mettre votre curseur sur le "d" de "dolly". P>
Ceci peut être automatisé avec une macro. P>
;; = Commentaires, ne tapez pas les p>
Ctrl kbd> + x kbd> ( kbd> ;; début macro p>
Alt kbd> + f kbd> Alt kbd> + f kbd> Alt kbd> + b kbd> p>
Ctrl kbd> + x kbd> ) kbd> ;; macro final p>
Ensuite, pour exécuter la macro dernière défini faire ceci: p>
Ctrl kbd> + x kbd> e kbd> p>
EDIT: comme mentionné dans un pascals commentaire, cela peut aussi simplement être fait avec p>
Alt kbd> + f kbd> Ctrl kbd> + f kbd> p>
Vous pouvez mettre cela dans une macro aussi bien, de toute façon le résultat est le même. P>
Merci. Je suppose que je suis toujours souffrant de traumatisme post-vim (W et B Keys)
Ouais, j'ai le sentiment que ce que vous commencez par vous de coloriera vraiment votre perception de l'autre éditeur de texte. J'ai commencé avec Vim et je ne peux pas croire que dans Emacs, vous ne pouvez pas simplement taper 'W' et 'B' pour sauter des mots comme vous le pouvez dans Vim.
Je suis aussi un Vim Convertir (bien que plus de 3 ans maintenant), et la commande w code>.
M-F C-F Code> ne fonctionne pas toujours, surtout s'il y a plusieurs espaces entre les mots.
La solution macro décrite est un excellent moyen d'obtenir ce comportement dans une session, mais c'est un peu gênant si c'est le comportement par défaut que vous souhaitez, car vous devez le définir chaque fois que vous démarrez EMACS. Si vous voulez que M-F fonctionne comme tout le temps, vous pouvez définir une fonction ELISP et le lier à la clé. Mettez ceci dans votre fichier .emacs:
Essayez quelque chose comme suit:
;; replace common word-operations on same-syntax-operations (require 'thingatpt) (global-set-key "\M-f" 'forward-same-syntax) (global-set-key "\M-b" (lambda() (interactive) (forward-same-syntax -1))) (defun kill-syntax (&optional arg) "Kill ARG sets of syntax characters after point." (interactive "p") (let ((opoint (point))) (forward-same-syntax arg) (kill-region opoint (point)))) (global-set-key "\M-d" 'kill-syntax) (global-set-key [(meta backspace)] (lambda() (interactive) (kill-syntax -1)))
Avancer vers l'avant deux fois et vers l'arrière est une fois bien, sauf si vous êtes au début d'une ligne avec des espaces à l'avant. Ensuite, aller de l'avant deux fois et le dos vous déplacera une fois au mot suivant, pas le premier mot. Le code ci-dessous affichera parfaitement la commande "W" de VI. J'ai écrit cela assez vite afin que ce code puisse être nettoyé plus loin.
(defun forward-word-to-beginning (&optional n) "Move point forward n words and place cursor at the beginning." (interactive "p") (let (myword) (setq myword (if (and transient-mark-mode mark-active) (buffer-substring-no-properties (region-beginning) (region-end)) (thing-at-point 'symbol))) (if (not (eq myword nil)) (forward-word n)) (forward-word n) (backward-word n))) (global-set-key (kbd "M-C-f") 'forward-word-to-beginning)
Cela rompt quand il y a un soulignement entre les mots.
Vous pouvez réaliser ce comportement en utilisant le My .emacs contient les liaisons suivantes P> Forward-Word code> et
en arrière-mot code> trouvé dans
misc.el code>. J'ai ces éléments liés à
Meta-F / Meta-B Code> (c'est-à-dire avec Maj enfoncé). Celles-ci sont équivalentes à
Meta-F / Meta-B Code> pour
Word Forward / Backward-Word Code>
(global-set-key (kbd "M-F") #'forward-to-word)
(global-set-key (kbd "M-B") #'backward-to-word)
Vous pouvez obtenir ce résultat avec M-F C-F :)
Déjà demandé et a répondu: Stackoverflow.com/ Questions / 1771102 / ...