用emacs,如何去配对(平衡)括号

当光标放在一个括号上时,如何跳转到配对的括号。 很好在emacs-nw上工作。

就像Vim中的一样。

;;从@Lindy @Francesco得到提示后,我发现更多:

CMf Move forward over a balanced expression CMb Move backward over a balanced expression CMk Kill balanced expression forward CM-SPC put the mark at the end of the sexp. CMn Move forward over a parenthetical group CMp Move backward over a parenthetical group ;; CM 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) 

使用CM-rightCM-left (分别为backward-sexpforward-sexp )转到当前expression式的开头或结尾。 这适用于括号对,但也适用于普通话。

正如emacs维基( http://www.emacswiki.org/emacs/NavigatingParentheses )中提到的那样:

  • CMn转发名单向前移动括号组

  • CMp后退列表向后移动括号组

  • CMf forward-sexp向前迈进一个平衡的expression

  • CMb落后sexp向后移动一个平衡的expression

  • CMk kill-sexp杀死平衡的expression

  • CM-SPC mark-sexp在sexp结尾处标记。

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

对于括号,括号和括号只是双击他们的伎俩。

我build议CMf和CMb,因为CM右/左已经绑定到我的DE(切换到左/右侧的桌面)。

我完全用下面的小函数(尽pipe我不知道它是否符合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 / C ++,Java,JS等语言的代码。

为了导航 ,使用以下内容。

 sp-forward-sexp (&optional arg) ;; CMf sp-backward-sexp (&optional arg) ;; CMb sp-down-sexp (&optional arg) ;; CMd sp-backward-down-sexp (&optional arg) ;; CMa sp-up-sexp (&optional arg) ;; CMe sp-backward-up-sexp (&optional arg) ;; CMu sp-next-sexp (&optional arg) ;; CMn sp-previous-sexp (&optional arg) ;; CMp sp-beginning-of-sexp (&optional arg) ;; CSd sp-end-of-sexp (&optional arg) ;; CSa 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默认等效的命令。 安装后,只需浏览它的function(它们都以sp-为前缀),以便更好地感受它的规模。

还有更多,我build议你看看维基