Câu trả lời:
M-C-f(hoặc M-C-right) bị ràng buộc forward-sexp
phả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-
.
backward-sexp
backward-up-list
forward-list
backward-sexp
ràng buộc M-C-b
.
M-C
thay 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.
forward-sexp
và backward-sexp
dừng lại ở khoảng trắng bên trong một chuỗi trích dẫn?
Tôi luôn gặp khó khăn trong việc ghi nhớ các ràng buộc forward-sexp
và backward-sexp
và 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)
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/ .
sp-beginning-of-sexp
và sp-end-of-sexp
rấ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.
skip-syntax-forward
sẽ làm điều đó.