2012-03-23 3 views
52

Когда курсор находится в одной круглой скобке, как перейти в круглые скобки. Хорошо подходит для работы в emacs -nw.С emacs, как перейти в скобки (балансировочные) круглые скобки

Как % в 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) 
+0

Возможный дубликат [Matching брекетов в Emacs] (http://stackoverflow.com/q/8627725/1225607) – Francesco

+0

См также 'Ch Sexp RET' – phils

+0

есть также большой' paredit', который сохраняет скобки сбалансированными и позволяет манипулировать ... –

ответ

47

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

+6

Спасибо, я нашел карту для ** переключателя рабочего стола справа/слева ** на моем рабочем столе. –

+5

Кто может указать имя команды ** C-M-right **? Теперь это приводит меня к другому рабочему пространству с помощью ** gnome desktop ** –

+9

@ Andrew_1510 Это 'backward-sexp' /' forward-sexp'. Вместо одновременного удерживания Ctrl + Alt + вы можете создавать эти привязки клавиш, используя 'Esc', затем' C- '. Таким образом, комбинация клавиш не будет захвачена gnome и будет правильно отправлена ​​emacs. – Francesco

13

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

+32

щелкнув? с помощью мыши? в emacs? –

+2

Нажатие? В emacs? Ба, я говорю! :) - * (Я предполагаю, что OP не использует xemacs?) * –

+1

Предполагая, конечно, GUI –

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))))) 
+1

Похоже, он хочет привязываться к «%», поскольку он вставляет клавишу нажатой, если она не находится на паре –

7

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

4

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

Он также поддерживает довольно сложные структуры, которые называются hybrid-s-expressions in it's documentation. Это делает его чрезвычайно мощным для управления кодом на таких языках, как C/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-), чтобы получить хорошее представление о масштабах.

Там намного больше к этому, я рекомендую вам иметь look at the wiki

15

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

  • CMn вперед-лист Перемещение вперед по круглых скобках группа

  • CMp backward-list Переместить назад над скобкой

  • CMf вперед-Sexp Перемещение вперед по сбалансированной экспрессии

  • CMb обратной Sexp Перемещение назад по сбалансированной экспрессии

  • CMk убить-Sexp убить сбалансированное выражение вперед

  • CM-SPC mark-sexp Положите отметку в конец o f sexp.

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

Смежные вопросы