Wie springe ich zum passenden (doppelten oder einfachen) Anführungszeichen einer Zeichenfolge in Anführungszeichen?

10

Wie springt man zum Pairing-Zitat, wenn man auf ein Anführungszeichen setzt?

AhLeung
quelle
1
Ich habe jetzt keinen Emacs zum Ausprobieren, aber ich würde mir vorstellen skip-syntax-forward, dass ich das tun würde.
wvxvw
1
Ich habe versucht, (skip-syntax-forward "^\"")welches zum nächsten doppelten Anführungszeichen springen kann, aber es überspringt kein maskiertes Symbol, z. B. "Zeichenfolge \" kann nicht übersprungen werden? "
AhLeung

Antworten:

9

M-C-f(oder M-C-right) verpflichtet, forward-sexpdas zu tun.

Ich schlage vor, Sie versuchen alle bekannten Bewegungsbefehle mit dem Präfix M-C-anstelle von C-.

  • M-C-b(oder M-C-left) gibtbackward-sexp
  • M-C-u(oder M-C-up) gibtbackward-up-list
  • M-C-n(oder M-C-down) gibtforward-list
Tobias
quelle
1
Sie sollten auch backward-sexpgebunden erwähnen M-C-b.
Timm
@Timm Ich dachte, es wäre ziemlich offensichtlich, dass man die Bewegungsbefehle mit Präfix versucht, M-Canstatt C-wenn man es weiß M-C-f. Okay - ich werde es in der Antwort erwähnen.
Tobias
1
Es scheint, forward-sexpund backward-sexpbei Leerzeichen in einer Zeichenfolge in Anführungszeichen zu stoppen?
AhLeung
1

Ich habe immer Probleme, mich an die Bindungen für forward-sexpund zu erinnern backward-sexp, und ich wollte etwas, das mehr wie %im Befehlsmodus von Vim funktioniert. Irgendwann habe ich dies zu meiner Konfiguration hinzugefügt (die Dokumentzeichenfolge sagt parens, aber es funktioniert für jede Art von Klammer oder Zitat), und jetzt bin ich zufrieden:

;;; 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
quelle
0

Ich schlage vor, das Smartparens-Paket für all diese Zwecke zu verwenden. Eine kurze Einführung finden Sie hier: https://ebzzry.io/en/emacs-pairs/ .

Sieger
quelle
1
Bitte geben Sie eine vollständige Antwort in Ihrem Beitrag. Nur-Link-Antworten sind für Kommentare in Ordnung, nicht jedoch für Antworten.
Dan
sp-beginning-of-sexpund sp-end-of-sexpsind sehr nah an dem, was ich will. Ich hoffe, dass sie zu einer Funktion (z. B. sp-matching-sexp) kombiniert werden können, sodass ich mich nur an eine Tastenkombination erinnern muss. Vielleicht werde ich versuchen, eine Elisp-Funktion zu schreiben. Lassen Sie mich wissen, ob das schon jemand gemacht hat. Vielen Dank.
AhLeung
ebzzry.io/en/emacs-pairs/#keys ("CMf". sp-forward-sexp) ("CMb". sp-backward-sexp) Aber Sie können es anders einstellen
Victor