С emacs, как перейти к скобкам (балансировке) - PullRequest
58 голосов
/ 23 марта 2012

При наведении курсора на круглые скобки, как перейти к круглым скобкам. Хорошо работать в 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)

Ответы [ 6 ]

53 голосов
/ 24 марта 2012

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

19 голосов
/ 31 июля 2015

Как уже упоминалось в вики emacs (http://www.emacswiki.org/emacs/NavigatingParentheses):

  • CMn forward-list Перемещение вперед по скобкам

  • CMp backward-list Переместиться назад по группе в скобках

  • CMf forward-sexp Переместиться вперед по сбалансированному выражению

  • CMb back-sexp Перемещение назад по сбалансированному выражению

  • CMk kill-sexp Убить сбалансированное выражение вперед

  • CM-SPC mark-sexp Поставить метку в конце sexp.

https://superuser.com/questions/677516/how-do-i-jump-to-the-opening-or-closing-paren-brace-in-emacs

19 голосов
/ 23 марта 2012

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

7 голосов
/ 30 октября 2012

Я предлагаю CMf и CMb, поскольку CM-вправо / влево уже связаны с моим DE (переключитесь на рабочий стол справа / слева).

5 голосов
/ 01 мая 2014

Я бы настоятельно рекомендовал SmartParens , он имеет обширную навигацию и манипулирование структурами в скобках (т. Е. Перенос, кавычки, теги, скобки, фигурные скобки, обычные скобки, sexp и т. Д.) С поддержкой многих языков и структуры, с легкой настройкой.

Он также поддерживает довольно сложные структуры, которые упоминаются как hybrid-s-выражения в его документации . Что делает его чрезвычайно мощным для манипулирования кодом в таких языках, как C / C ++, Java, JS и т. Д.

Для навигации используется следующее.

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-), чтобы почувствовать его масштаб.

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

5 голосов
/ 24 марта 2012

Я использую следующую маленькую функцию именно для этого (хотя я не знаю, соответствует ли она поведению 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)))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...