Emacs支架和支架突出显示?

时间:2012-02-26 15:52:14

标签: c++ c linux emacs coding-style

输入代码时,Emacs会暂时突出显示匹配的支架或支架。使用现有代码,如果我突出显示它的双胞胎,有没有办法要求它突出显示匹配的支架或支架?

在处理编译器错误和警告时,我经常尝试进行健全性检查。在插入代码之前,我通常在编码时输入两个大括号,但在调试时注释掉代码时,有时会无意中注释掉一个大括号。

处理与Emacs匹配的支架和支架的任何建议?

操作系统主要是Linux / Unix,但我也在OS X和Windows上使用它。

7 个答案:

答案 0 :(得分:10)

如果您正在使用支持它的语言,请认真对待ParEdit。如果你没有使用Lisp方言,那它就不那么有用了。

对于一般大括号/支架/突出显示,请查看highlight-parentheses模式(当point在其中时,颜色会对多个大括号进行编码)。您还可以通过自定义设置(show-paren-mode)启用M-x customize-variable show-paren-mode;那一个强烈突出显示支点/支架/ paren匹配一个点(如果点上的一个不匹配任何东西,你得到一个不同的颜色)。

我的.emacs目前包含(其中包括)

(require 'highlight-parentheses)

(define-globalized-minor-mode global-highlight-parentheses-mode highlight-parentheses-mode
  (lambda nil (highlight-parentheses-mode t)))

(global-highlight-parentheses-mode t)

以及show-paren-mode定制,这对我很有用(当然,我在lisping时也使用paredit,但这些仍然有用)。

答案 1 :(得分:2)

除直接来自manualwiki的答案外,还请查看autopair

答案 2 :(得分:1)

顺便说一下,对于当前的问题:M-x blink-matching-open将为现有的关闭paren“重新闪烁”,就好像刚刚插入它一样。查看匹配paren的另一种方法是使用M-C-b和M-C-f(跳过匹配的parens对),这也是非常有用的导航命令。

答案 3 :(得分:0)

我是第二个ParEdit。对于lisp开发来说,它是非常好的。

FWIW我经常使用这个功能来匹配paren(来回)。

;; goto-matching-paren
;; -------------------
;; If point is sitting on a parenthetic character, jump to its match.
;; This matches the standard parenthesis highlighting for determining which
;; one it is sitting on.
;;
(defun goto-matching-paren ()
  "If point is sitting on a parenthetic character, jump to its match."
  (interactive)
  (cond ((looking-at "\\s\(") (forward-list 1))
        ((progn
           (backward-char 1)
           (looking-at "\\s\)")) (forward-char 1) (backward-list 1))))
(define-key global-map [(control ?c) ?p] 'goto-matching-paren) ; Bind to C-c p

声明:我不是这个函数的作者,是从互联网上复制的。

答案 4 :(得分:0)

在emacs 26上尝试

(show-paren-mode 1)
(setq show-paren-style 'mixed)
  • 启用显示括号
  • 将显示设置为高亮括号,或者如果其中一个不可见的高亮显示括起来,

要在两个位置之间切换光标位置/点,请将此脚本放入.emacs

(defun swcbrace ()(interactive)
  (if (looking-at "(")(forward-list)
  (backward-char)
  (cond
    ((looking-at ")")(forward-char)(backward-list))
    ((looking-at ".)")(forward-char 2)(backward-list))
  )))
(global-set-key (kbd "<C-next>") 'swcbrace)

通过按Control-Pgdn可以进行切换

答案 5 :(得分:0)

如果只想检查平衡的定界符(括号,方括号或花括号),则可以使用backward-sexp(绑定到 Ctrl Alt B )和forward-sexp(绑定到 Ctrl Alt F )来向前和向后跳过相应的定界符。这些命令非常易于浏览源文件,跳过结构和函数定义,而无需进行任何缓冲区修改。

答案 6 :(得分:0)

您可以在 init.el 中设置以下内容:

(setq show-paren-delay 0)
(show-paren-mode 1)

确保匹配的括号突出显示。

请注意,(setq show-paren-delay 0) 需要在 (show-paren-mode 1) 之前设置,以便根据 wiki 突出显示没有延迟。

如果要快速检查当前文件中的括号是否平衡: M-x check-parens

两个选项都在 Emacs 27.1 上测试