Ответ 1
Используйте C-M-right
и C-M-left
(соответственно backward-sexp
и forward-sexp
), чтобы перейти к началу или концу текущего выражения. Это работает для пар круглых скобок, а также для простых слов.
Когда курсор находится в одной круглой скобке, как перейти в скобки для спаривания. Хорошо работать в emacs -nw.
Также как % в Vim.
;; После получения подсказки от @Lindy, @Francesco, я нашел больше:
C-M-f Move forward over a balanced expression
C-M-b Move backward over a balanced expression
C-M-k Kill balanced expression forward
C-M-SPC put the mark at the end of the sexp.
C-M-n Move forward over a parenthetical group
C-M-p Move backward over a parenthetical group
;; C-M key binding can also be done by --> ESC Control-key
;;And put this to .emacs, it will highlight opening/closing parens:
(show-paren-mode 1)
Используйте C-M-right
и C-M-left
(соответственно backward-sexp
и forward-sexp
), чтобы перейти к началу или концу текущего выражения. Это работает для пар круглых скобок, а также для простых слов.
Как упоминалось в emacs wiki (http://www.emacswiki.org/emacs/NavigatingParentheses):
C-M-n forward-list Перемещение вперед по скобке группы
C-M-p backward-list Перемещение назад по скобкой группы
C-M-f forward-sexp Перемещение вперед по сбалансированному выражению
C-M-b backward-sexp Перемещение назад по сбалансированному выражению
C-M-k kill-sexp Убить сбалансированное выражение вперед
C-M-SPC mark-sexp Поместите отметку в конец sexp.
https://superuser.com/questions/677516/how-do-i-jump-to-the-opening-or-closing-paren-brace-in-emacs
Для круглых скобок, скобок и скобок просто двойной щелчок на них делает трюк.
Я предлагаю C-M-f и C-M-b, поскольку C-M-right/left уже привязаны к моему DE (переключиться на рабочий стол справа/слева).
Я использую следующую небольшую функцию для этого (хотя я не знаю, соответствует ли это vim-поведению, я сам не пользователь vim):
(defun mo-match-paren (arg)
"Go to the matching parenthesis."
(interactive "p")
(cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1))
((looking-at "\\s\)") (forward-char 1) (backward-list 1))
(t (self-insert-command (or arg 1)))))
Я очень рекомендую SmartParens, он имеет обширную навигацию и манипулирование строчными структурами (т.е. обертывание, кавычки, теги, скобки, фигурные скобки, обычные круглые скобки, sexp и т.д.). Поддержка многих языков и структур с легкой настройкой.
Он также поддерживает довольно сложные структуры, которые в нем документируются hybrid-s-expressions. Это делает его чрезвычайно мощным для управления кодом на таких языках, как C/С++, Java, JS и т.д.
Для navigation используются следующие.
sp-forward-sexp (&optional arg) ;; C-M-f
sp-backward-sexp (&optional arg) ;; C-M-b
sp-down-sexp (&optional arg) ;; C-M-d
sp-backward-down-sexp (&optional arg) ;; C-M-a
sp-up-sexp (&optional arg) ;; C-M-e
sp-backward-up-sexp (&optional arg) ;; C-M-u
sp-next-sexp (&optional arg) ;; C-M-n
sp-previous-sexp (&optional arg) ;; C-M-p
sp-beginning-of-sexp (&optional arg) ;; C-S-d
sp-end-of-sexp (&optional arg) ;; C-S-a
sp-beginning-of-next-sexp (&optional arg) ;; none
sp-beginning-of-previous-sexp (&optional arg) ;; none
sp-end-of-next-sexp (&optional arg) ;; none
sp-end-of-previous-sexp (&optional arg) ;; none
Обратите внимание, что он сопоставляет многие команды с эквивалентом по умолчанию Emacs. Когда он установлен, просто просмотрите его функции (все они префиксны с sp-
), чтобы получить хорошее представление о масштабах.
Намного больше, я бы порекомендовал вам посмотреть на вики