使用emacs,如何进入配对(平衡)括号

时间:2012-03-23 19:51:46

标签: 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)

6 个答案:

答案 0 :(得分:53)

使用C-M-rightC-M-left(分别为backward-sexpforward-sexp)转到当前表达式的开头或结尾。这适用于括号对,也适用于简单的单词。

答案 1 :(得分:18)

对于括号,大括号和括号只需双击即可。

答案 2 :(得分:18)

如emacs wiki(http://www.emacswiki.org/emacs/NavigatingParentheses)中所述:

  • C-M-n 转发列表向括号内移动

  • C-M-p 向后列表在括号组上向后移动

  • C-M-f forward-sexp向前推进平衡表达

  • C-M-b back-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 :(得分:7)

我建议使用C-M-f和C-M-b,因为C-M-right / left已经绑定到我的DE(右侧/左侧切换到桌面)。

答案 4 :(得分: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)))))

答案 5 :(得分:4)

我强烈推荐SmartParens它具有广泛的导航和操作括号结构(即包装,引号,标签,括号,括号,常规括号,性别等)。支持多种语言和结构,易于定制。

它还支持相当复杂的结构,称为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