Ответы:
M-C-f(или M-C-right) обязан forward-sexp
сделать это.
Я предлагаю вам попробовать все известные команды движения с префиксом M-C-
вместо C-
.
backward-sexp
backward-up-list
forward-list
backward-sexp
обязательно M-C-b
.
M-C
а не C-
если знает M-C-f
. Хорошо, я упомяну это в ответе.
forward-sexp
и backward-sexp
останавливаться на пробелах внутри строки в кавычках?
У меня всегда возникают проблемы с запоминанием привязок для forward-sexp
и backward-sexp
, и я хотел что-то, что работало бы больше, %
чем в командном режиме Vim. В какой-то момент я добавил это в свою конфигурацию (строка документации говорит parens, но она работает для любого типа скобок или кавычек), и теперь я удовлетворен:
;;; 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)
Я предлагаю использовать пакет smartparens для всех подобных целей. Краткое введение здесь: https://ebzzry.io/en/emacs-pairs/ .
sp-beginning-of-sexp
и sp-end-of-sexp
очень близки к тому, что я хочу. Я надеюсь, что они могут быть объединены в одну функцию (например, sp-matching-sexp
), так что мне нужно запомнить только одну привязку клавиш. Может быть, я попытаюсь написать функцию elisp. Дайте мне знать, если кто-то делал это раньше. Спасибо.
skip-syntax-forward
что сделал бы это.