Làm thế nào để chuyển sang trích dẫn khớp (đôi hoặc đơn) của một chuỗi được trích dẫn?


10

Khi con trỏ trên một ký hiệu trích dẫn, làm thế nào để chuyển sang trích dẫn ghép nối?


1
Bây giờ tôi không có Emacs để thử, nhưng tôi tưởng tượng skip-syntax-forwardsẽ làm điều đó.
wvxvw

1
Tôi đã thử (skip-syntax-forward "^\"")cái nào có thể chuyển sang biểu tượng trích dẫn kép tiếp theo, nhưng nó không bỏ qua biểu tượng thoát, ví dụ: "chuỗi \" không thể bỏ qua? ".
AhLeung

Câu trả lời:


9

M-C-f(hoặc M-C-right) bị ràng buộc forward-sexpphải làm điều đó.

Tôi đề nghị bạn thử tất cả các lệnh chuyển động nổi tiếng với tiền tố M-C-thay vì C-.

  • M-C-b(hoặc M-C-left) đưa rabackward-sexp
  • M-C-u(hoặc M-C-up) đưa rabackward-up-list
  • M-C-n(hoặc M-C-down) đưa raforward-list

1
Bạn cũng nên đề cập đến backward-sexpràng buộc M-C-b.
Timm

@Timm Tôi nghĩ sẽ khá rõ ràng khi người ta thử các lệnh chuyển động với tiền tố M-Cthay vì C-nếu ai đó biết M-C-f. Được rồi - tôi sẽ đề cập đến nó trong câu trả lời.
Tobias

1
Có vẻ như forward-sexpbackward-sexpdừng lại ở khoảng trắng bên trong một chuỗi trích dẫn?
AhLeung

1

Tôi luôn gặp khó khăn trong việc ghi nhớ các ràng buộc forward-sexpbackward-sexpvà tôi muốn một cái gì đó hoạt động giống như %trong chế độ chỉ huy của Vim. Tại một số điểm, tôi đã thêm phần này vào cấu hình của mình (chuỗi doc nói parens nhưng nó hoạt động cho bất kỳ loại dấu ngoặc hoặc trích dẫn nào), và bây giờ tôi hài lòng:

;;; 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ôi đề nghị sử dụng gói smartparens cho tất cả các mục đích như vậy. Giới thiệu ngắn gọn là ở đây: https://ebzzry.io/en/emacs-pairs/ .


1
Vui lòng cung cấp một câu trả lời đầy đủ trong bài viết của bạn. Phản hồi chỉ liên kết là ổn cho ý kiến, nhưng không cho câu trả lời.
Dan

sp-beginning-of-sexpsp-end-of-sexprất gần với những gì tôi muốn. Tôi hy vọng rằng chúng có thể được kết hợp thành một chức năng (ví dụ sp-matching-sexp:) để tôi chỉ cần nhớ một lần bấm phím. Có lẽ tôi sẽ cố gắng viết một hàm elisp. Hãy cho tôi biết nếu có ai làm điều đó trước đây. Cảm ơn.
AhLeung

ebzzry.io/en/emacs-pairs/#keys ("CMf". sp-Forward-sexp) ("CMb". sp-backward-sexp) Nhưng bạn có thể đặt nó khác
Victor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.