¿Cómo saltar a una cita coincidente (doble o simple) de una cadena entre comillas?

10

Cuando el cursor en un símbolo de cotización, ¿cómo saltar a la cotización de emparejamiento?

AhLeung
fuente
1
No tengo Emacs ahora para probar, pero imagino skip-syntax-forwardque haría eso.
wvxvw
1
Intenté (skip-syntax-forward "^\"")cuál puede saltar al siguiente símbolo de comillas dobles, pero no omite el símbolo de escape, por ejemplo, "¿cadena \" no se puede omitir? "
AhLeung

Respuestas:

9

M-C-f(o M-C-right) obligado a forward-sexphacer eso.

Le sugiero que pruebe todos los comandos de movimiento conocidos con el prefijo en M-C-lugar de C-.

  • M-C-b(o M-C-left) dabackward-sexp
  • M-C-u(o M-C-up) dabackward-up-list
  • M-C-n(o M-C-down) daforward-list
Tobias
fuente
1
También debe mencionar backward-sexpobligado a M-C-b.
Timm
@Timm Pensé que sería bastante obvio que uno intentara los comandos de movimiento con prefijo en M-Clugar de C-si lo supiera M-C-f. Bien, lo mencionaré en la respuesta.
Tobias
1
Parece eso forward-sexpy se backward-sexpdetiene en espacios en blanco dentro de una cadena citada?
AhLeung
1

Siempre tengo problemas para recordar los enlaces para forward-sexpy backward-sexp, y quería algo que funcionara más como lo %hace en el modo de comando de Vim. En algún momento, agregué esto a mi configuración (la cadena de documentación dice parens pero funciona para cualquier tipo de soporte o cita), y ahora estoy satisfecho:

;;; 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)
genehack
fuente
0

Sugiero usar el paquete smartparens para todos esos propósitos. Una breve introducción está aquí: https://ebzzry.io/en/emacs-pairs/ .

Víctor
fuente
1
Proporciona una respuesta completa en tu publicación. Las respuestas de solo enlace están bien para comentarios, pero no para respuestas.
Dan
sp-beginning-of-sexpy sp-end-of-sexpestoy muy cerca de lo que quiero Espero que se puedan combinar en una función (por ejemplo, sp-matching-sexp) para que solo necesite recordar una combinación de teclas. Tal vez intentaré escribir una función elisp. Avísame si alguien hizo eso antes. Gracias.
AhLeung
ebzzry.io/en/emacs-pairs/#keys ("CMf". sp-forward-sexp) ("CMb". sp-backward-sexp) Pero puedes configurarlo diferente
Victor