如何取消突出显示高亮符号的符号


13

highlight-symbol-at-point 确实有用,但是我找不到取消突出显示符号的简便方法。

目前,我必须unhighlight-regexp为每个突出显示的符号重复调用。

是否有更好的方法来:

  • 取消突出显示缓冲区中所有突出显示的符号
  • 取消显示符号?

您是否需要一次性突出显示所有符号?
Kaushal Modi

大多数时候-是的。有时在点处取消突出显示符号也是有用的。
kostya '16

如果要取消突出显示点下的符号或取消突出显示所有符号,答案将有所不同。
Kaushal Modi

我更新了我的问题
kostya'1

2
您可以使用M-x hi-lock-mode
Amir Karimi

Answers:


10

有没有更好的方法来取消突出显示缓冲区中所有突出显示的符号?

从中C-h f unhighlight-regexp,我们得到

(unhighlight-regexp REGEXP)

删除通过hi-lock设置的REGEXP的每个匹配项的突出显示。以交互方式提示您输入REGEXP,仅接受以前由hi-lock交互功能插入的正则表达式。如果REGEXP为t(或以交互方式指定了Cu),则删除所有高亮显示。

这意味着,我们只需要调用unhighlight-regexpt作为它的参数删除所有喜锁在缓冲区突出。

如果这是一次性的事情,则可以通过M-: (unhighlight-regexp t)或快速完成C-u M-s h u。但这似乎是您经常需要做的事情。在这种情况下,最好将其包装在interactive函数中并将其绑定到某个键。

下面是一个建议的解决方案,其中my/unhighlight-all-in-buffer包装器交互功能是绑定到hU中的search-map。默认情况下,search-map前缀为M-s。所以,现在,正如M-s h u发布会unhighlight-regexpM-s h U(注意是大写的U)发射my/unhighlight-all-in-buffer

(require 'hi-lock)        
(defun my/unhighlight-all-in-buffer ()
  "Remove all highlights made by `hi-lock' from the current buffer.
The same result can also be be achieved by \\[universal-argument] \\[unhighlight-regexp]."
  (interactive)
  (unhighlight-regexp t))
(define-key search-map "hU" #'my/unhighlight-all-in-buffer)

有没有更好的方法可以在某个点取消突出显示符号?

好处是您无需将点放在需要突出显示的符号上。

您只需调用M-x unhighlight-regexpM-s h u(其默认绑定)并按M-p/ M-n直到遇到需要取消突出显示的符号的正则表达式,然后按Enter。


4

另一种方法是使用库Highlighthighlight.el),命令hlt-highlight-symbol-at-pointhlt-unhighlight-symbol-at-point

它们分别默认绑定到C-x X h sC-x X u sC-x X默认情况下,所有突出显示和取消突出显示的命令都绑定在前缀键上。高亮显示命令使用前缀键C-x X h。取消突出显示的命令使用前缀key C-x X u。除了C-x X将其绑定到prefix命令外,还可以使用其他前缀键hlt-map

库中的突出显示突出显示可以使用覆盖或文本属性(或两者)。可以自动选择突出显示的脸部或颜色(从定制的脸部和颜色序列中选择)。

突出显示可以使用property font-lock-face,因此它由Font Lock模式控制。或者它可以使用property face,以便不受其控制。(您可以使用property face在不使用字体锁定的缓冲区中突出显示,并且在关闭Font Lock模式时,突出显示将保留在字体锁定的缓冲区中。)


4

C-u C-x w r

(unhighlight-regexp REGEXP) (...)如果REGEXP为t(或C-u 以交互方式指定),则删除所有hi-lock高亮显示。


0

这将取消突出显示单个符号:

(defun unhighlight-symbol-at-point ()
  "Remove highlight of symbol at point."
  (interactive)
  (unhighlight-regexp (concat "\\_<" (thing-at-point 'symbol) "\\_>")))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.