Comment passer à la citation correspondante (double ou simple) d'une chaîne entre guillemets?


10

Lorsque le curseur sur un symbole de citation, comment passer à la citation d'appariement?


1
Je n'ai pas Emacs maintenant pour essayer, mais j'imagine skip-syntax-forwardque ce serait le cas.
wvxvw

1
J'ai essayé (skip-syntax-forward "^\"")lequel peut passer au symbole de guillemet suivant, mais il ne saute pas le symbole échappé, par exemple, "string \" ne peut pas être ignoré? ".
AhLeung

Réponses:


9

M-C-f(ou M-C-right) obligé de le forward-sexpfaire.

Je vous suggère d'essayer toutes les commandes de mouvement bien connues avec le préfixe M-C-au lieu de C-.

  • M-C-b(ou M-C-left) donnebackward-sexp
  • M-C-u(ou M-C-up) donnebackward-up-list
  • M-C-n(ou M-C-down) donneforward-list

1
Vous devez également mentionner backward-sexplié à M-C-b.
Timm

@Timm J'ai pensé qu'il serait plutôt évident que l'on essaie les commandes de mouvement avec préfixe M-Cau lieu de C-si l'on sait M-C-f. D'accord - je vais le mentionner dans la réponse.
Tobias

1
Il semble que forward-sexpet backward-sexps'arrêter aux espaces blancs à l'intérieur d'une chaîne entre guillemets?
AhLeung

1

J'ai toujours du mal à me souvenir des liaisons pour forward-sexpet backward-sexp, et je voulais quelque chose qui fonctionnait plus comme le %fait le mode de commande de Vim. À un moment donné, j'ai ajouté cela à ma configuration (la docstring dit parens mais cela fonctionne pour n'importe quelle sorte de support ou de citation), et maintenant je suis satisfait:

;;; PAREN-BOUNCE
;;;; originally ganked from <http://elfs.livejournal.com/1216037.html>
(defun genehack/paren-bounce ()
  "Bounce from one paren to the matching paren."
  (interactive)
  (let ((prev-char (char-to-string (preceding-char)))
        (next-char (char-to-string (following-char))))
    (cond ((string-match "[[{(<\"']" next-char) (forward-sexp 1))
          ((string-match "[\]})>\"']" prev-char) (backward-sexp 1))
          (t (error "%s" "Not an expression boundary.")))))

;;;; bindings
(global-set-key (kbd "C-%")        'genehack/paren-bounce)
(global-set-key (kbd "C-5")        'genehack/paren-bounce)

0

Je suggère d'utiliser le package smartparens à toutes ces fins. La brève introduction est ici: https://ebzzry.io/en/emacs-pairs/ .


1
Veuillez fournir une réponse complète dans votre message. Les réponses en lien uniquement sont acceptables pour les commentaires, mais pas pour les réponses.
Dan

sp-beginning-of-sexpet sp-end-of-sexpsont très proches de ce que je veux. J'espère qu'ils peuvent être combinés en une seule fonction (par exemple, sp-matching-sexp) de sorte que je n'ai besoin que de me souvenir d'un raccourci clavier. J'essaierai peut-être d'écrire une fonction elisp. Faites-moi savoir si quelqu'un l'a déjà fait. Merci.
AhLeung

ebzzry.io/en/emacs-pairs/#keys ("CMf". sp-forward-sexp) ("CMb". sp-backward-sexp) Mais vous pouvez le définir différemment
Victor
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.