Alıntılanan bir dizenin eşleşen (çift veya tek) alıntıya nasıl atlanır?


10

Bir teklif sembolünde imleç olduğunda, eşleştirme teklifine nasıl atlanır?


1
Şimdi denemek için Emac'ım yok, ama bunu yapacağımı hayal skip-syntax-forwardediyorum.
wvxvw

1
(skip-syntax-forward "^\"")Hangi bir sonraki çift tırnak sembol atlamak denedim , ama kaçan sembolü atlamaz, örneğin, "dize \" atlanamaz? "
AhLeung

Yanıtlar:


9

M-C-f(veya M-C-right) forward-sexpbunu yapmak zorundadır.

Bilinen tüm hareket komutlarını önek M-C-yerine denemenizi öneririm C-.

  • M-C-b(veya M-C-left) verirbackward-sexp
  • M-C-u(veya M-C-up) verirbackward-up-list
  • M-C-n(veya M-C-down) verirforward-list

1
Ayrıca backward-sexpbağlı gerekir M-C-b.
Timm

@Timm Hareket komutlarını M-C, C-eğer bilirse , önekle denemenin oldukça açık olacağını düşündüm M-C-f. Tamam - cevapta bahsedeceğim.
Tobias

1
Öyle görünüyor forward-sexpve backward-sexpalıntılanan bir dizenin içindeki boşluklarda duruyor mu?
AhLeung

2

Hep bağlantılarında hatırlamakta sorun var forward-sexpve backward-sexpve daha fazla gibi çalıştı şey istedim %Vim'ın komut modunda yapar. Bir noktada, bunu config'ime ekledim (docstring parens diyor, ancak herhangi bir parantez veya alıntı için çalışıyor) ve şimdi memnunum:

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

Tüm bu amaçlar için smartparens paketini kullanmanızı öneririm. Kısa tanıtım burada: https://ebzzry.io/en/emacs-pairs/ .


1
Lütfen yayınınıza eksiksiz bir yanıt verin. Yalnızca bağlantı yanıtları yorumlar için uygundur, ancak yanıtlar için uygun değildir.
Dan

sp-beginning-of-sexpve sp-end-of-sexpistediğime çok yakınlar. Umarım tek bir fonksiyonda birleştirilebilirler (örneğin), sp-matching-sexpsadece bir tuş bağını hatırlamam gerekir. Belki bir elisp fonksiyonu yazmaya çalışacağım. Bunu daha önce kimse yaptıysa bana bildirin. Teşekkürler.
AhLeung

ebzzry.io/en/emacs-pairs/#keys ("CMf". sp-forward-sexp) ("CMb". sp-backward-sexp) Ama farklı ayarlayabilirsiniz
Victor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.