如何突出显示Emacs缓冲区中所有单词的出现次数?

问题描述 投票:70回答:13

Notepad ++有一个方便的功能:如果您在文本中选择一个单词(不一定是关键字),则该单词会在整个文本中突出显示。这可以在Emacs中完成吗?如果是这样,怎么样?

它不一定必须像Notepad ++一样工作(即通过选择);理想情况下,我想设置一个键绑定,使所有出现的光标下的单词都突出显示。

如果高光是永久性的,即远离突出显示的单词的移动点不应该导致高光被移除,那将是很好的。

此外,如果有一个解决方案可以在高亮显示之间导航(使用自定义键绑定),那将非常有用。

emacs highlighting
13个回答
38
投票

也许你在寻找http://nschum.de/src/emacs/highlight-symbol/的highlight-symbol.el:


2
投票

试试highlight.el。它突出显示单词,并允许您轻松编辑它的所有出现。通过额外的击键(C-'),它隐藏了所有没有该词的行。非常便利!


0
投票

这可能不会突出显示,但会在不需要输入的情况下搜索单词...

当你到达想要搜索的单词C-S,然后用C-W读取完整的单词然后你就可以用C-S来搜索它。在我的Emacs中,它还突出显示了文档中的所有实例。


0
投票

这个包在Melpa中可用,您也可以自定义高亮样式。

(more info)


0
投票

没有人提到iedit。这基本上是对https://github.com/ignacy/idle-highlight-in-visible-buffers-mode的更好的重写。 “更好”,因为缺少原始高亮符号的错误(例如,临时突出显示卡住,或临时突出显示消失,因为在突出显示的单词内部移动;或者无法突出显示像symbol-overlay mode这样的符号),更好地集成和维护。请参阅其README的“优点”段落。

您可以像往常一样使用M-xpackage-install安装它(确保事先用highlight-symbol-mode更新包列表)。作为参考,帖子的底部有我的配置中的代码来启用模式。

Notepad ++有一个方便的功能:如果您在文本中选择一个单词(不一定是关键字),则该单词会在整个文本中突出显示。这可以在Emacs中完成吗?如果是这样,怎么样?

一旦启用*,屏幕上的事件将显示在超时后放置光标的每个单词(默认情况下超时为0.5秒,可以使用package-list-packages变量进行配置)。如果一个单词没有突出显示,这意味着屏幕上只有一个匹配(你放置光标的那个),因此不需要突出显示它。

如果高光是永久性的,即远离突出显示的单词的移动点不应该导致高光被移除,那将是很好的。

要永久地突出显示光标下的单词,有一个函数overlay-symbol。要取消强调,请再次调用它。

在我的配置示例中,它绑定到Logo +`键。


symbol-overlay-idle-time

75
投票

hi-lock建议很好。我认为使用M-x版本更容易:

M-x highlight-regexp RET <REGEXP>

M-x highlight-phrase RET <REGEXP>

highlight-phrase只是在highlight-regexp周围的一些糖,它忽略了大小写并翻译正则表达式中的空格以匹配任意空白。便利。


36
投票

键入C-s,然后键入当前单词或键入C-w。作为奖励,你现在可以再次点击C-s来搜索这个词。

这称为增量搜索。


13
投票

我使用的是空闲 - 突出显示

http://www.emacswiki.org/emacs/IdleHighlight

M-x idle-highlight设置一个空闲计时器,用于突出显示该点下单词缓冲区中的所有事件。

要在所有编程模式中启用它,请在~/.emacs.d/init.el中:

;; highlight words
(add-hook 'prog-mode-hook (lambda () (idle-highlight-mode t)))

10
投票

Light-symbol将突出显示任何符号点。

或者,您可以使用occur,它列出了与正则表达式匹配的所有行。快速查看类中的所有函数很有用。


6
投票

尝试http://www.emacswiki.org/emacs/msearch.el使用光标选择的文本的所有出现都会突出显示。您必须拖动要突出显示的字符串。这使您可以轻松更改选择而无需更改突出显示。

如果要保留字符串的突出显示,可以将其冻结。

您可以将缓冲区奴役到另一个缓冲区。在主缓冲区中选择的文本也将在从属缓冲区中突出显示。这对比较缓冲区很有用。当您在另一个缓冲区中调查文本时,它也可用于在一个缓冲区中记笔记。您可以在notes缓冲区中拥有一组关键字。拖动这样的关键字,将突出显示调查文本中的出现。

我现在使用这些东西多年了。我最近加了冰冻。所以,也许有些东西被打破了。如果是这种情况,请留下关于http://www.emacswiki.org/emacs/msearch或此处的说明。


5
投票

这可能不如你所希望的那么好,但如果你放

(global-hi-lock-mode 1)

在你的qazxsw poi文件中,你可以输入qazxsw poi来突出显示.emacsC-x w h REGEX <RET> <RET>的所有出现,以便再次突出显示它们。再次,不像你可能喜欢的那样优雅,但它会起作用。


5
投票

检查REGEX

应该:

C-x w h变为<RET> <RET>


2
投票

C-x w r REGEX <RET>中的命令允许您(un)使用叠加或文本属性突出显示与正则表达式匹配的文本(在本例中为符号)。您可以在事件之间循环。突出显示可以是暂时的或持久的。 Interactive Highlighting

© www.soinside.com 2019 - 2024. All rights reserved.