Подтвердить что ты не робот

С emacs, как перейти к спариванию (балансировке) круглых скобок

Когда курсор находится в одной круглой скобке, как перейти в скобки для спаривания. Хорошо работать в 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)
4b9b3361

Ответ 1

Используйте C-M-right и C-M-left (соответственно backward-sexp и forward-sexp), чтобы перейти к началу или концу текущего выражения. Это работает для пар круглых скобок, а также для простых слов.

Ответ 2

Как упоминалось в 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

Ответ 3

Для круглых скобок, скобок и скобок просто двойной щелчок на них делает трюк.

Ответ 4

Я предлагаю C-M-f и C-M-b, поскольку C-M-right/left уже привязаны к моему DE (переключиться на рабочий стол справа/слева).

Ответ 5

Я использую следующую небольшую функцию для этого (хотя я не знаю, соответствует ли это 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)))))

Ответ 6

Я очень рекомендую 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-), чтобы получить хорошее представление о масштабах.

Намного больше, я бы порекомендовал вам посмотреть на вики