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

And*_*510 61 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)
Run Code Online (Sandbox Code Playgroud)

Lin*_*cer 55

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

  • @ Andrew_1510这是'back-sexp` /`forward-sexp`.您可以使用"Esc"然后"C- <arrow>"生成这些键绑定,而不是同时按住Ctrl + Alt + <arrow>.这样,gnome不会捕获密钥组合,并且会正确转发给emacs. (11认同)
  • 谢谢,我发现它通过我的桌面映射到**切换桌面左/右**. (6认同)
  • 您还可以使用`CMf`和`CMb`进行前进和后退.(这对应于`Cf`和`Cb`键映射,用于平滑向前和向后移动,使用箭头键在键盘之前.) (6认同)
  • 谁能告诉**CM-right**的命令名?它现在通过**gnome桌面**带我到其他工作区** (5认同)

Buz*_*uzz 20

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

  • CMn转发列表向括号内移动

  • CMp向后列表在括号组上向后移动

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

  • CMb backward-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


Jor*_*ata 19

对于括号,括号和括号只需双击它们即可.

  • 点击?用你的鼠标?在emacs? (43认同)
  • 点击?在emacs?呸,我说!:) - *(我假设OP不使用xemacs?)* (3认同)
  • 有时,单击某项比搜索它或移动光标位置更快。FWIW,*双击*某些括号、方括号或花括号会将光标移动到其对并选择内部内容。至少从 X 上的 Emacs 24 开始是这样。 (2认同)
  • @Felipe 在 Emacs26 中,您可以双击右括号来选择内部内容。虽然我发现在 Emacs 中点击是亵渎 (2认同)

ych*_*che 7

我建议使用CMf和CMb,因为CM-right/left已经绑定到我的DE(右侧/左侧切换到桌面).


Mor*_*kus 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)))))
Run Code Online (Sandbox Code Playgroud)


oco*_*odo 5

我强烈建议SmartParens它具有广泛的导航和操纵括号结构(即,包装,引号,标签,括号,花括号,规则括号,sexp等),并支持多种语言和结构,并且易于定制。

它还支持相当复杂的结构,在其文档中将其称为hybrid-s-expressions。这使得它在处理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
Run Code Online (Sandbox Code Playgroud)

请注意,它将许多命令映射到Emacs默认等效项。安装后,只需浏览其功能(都带有前缀sp-)就可以很好地了解其规模。

还有很多其他内容,我建议您看看Wiki。