2008-12-22 64 views
61

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

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

如果突出显示是永久性的,即移动点离开突出显示的单词应该是而不是会导致突出显示被删除。

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

回答

34

也许高亮symbol.el在http://nschum.de/src/emacs/highlight-symbol/是你在找什么:

alt text

+1

我试过了,但无法让它工作 - emacs抱怨“Symbol的值为变量:void:highlight-symbol-idle-delay”。 – Headcrab 2008-12-24 02:20:13

+1

我确实有这个问题。我最终评论了整个(defcustom highlight-symbol-idle-delay ...)部分,并在defun highlight-symbol-update-timer ...之前移动(defvar highlight-symbol-idle-delay ...)。 ),这将避免错误。 – polyglot 2008-12-26 03:34:47

+0

是的,最后我做了同样的事情。 – Headcrab 2008-12-26 08:45:25

5

这可能不是像你一样你希望什么,但如果你把

(global-hi-lock-mode 1) 

.emacs文件,那么你可以键入C-x w h REGEX <RET> <RET>突出的REGEX所有出现,并C-x w r REGEX <RET>再次unhighlight他们。再次,不如你可能喜欢的优雅,但它会工作。

3

检查Interactive Highlighting

应该是:

Ç - X 瓦特^h<RET><RET>

+0

首先,高锁定模式应通过M-x高锁定模式启用。然后,它的工作。顺便说一句,交互式突出显示的链接已经死了。它现在在这里:https://www.gnu。org/software/emacs/manual/html_node/emacs/Highlight-Interactively.html – aspirin 2013-12-13 14:54:13

10

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

或者,您可以使用occur,其中列出了与正则表达式匹配的所有行。快速查看课程中的所有功能很有用。

+0

这看起来很不错,但它是如何知道它是否找到相同的符号或具有相同名称的另一个符号? – HelloGoodbye 2015-06-26 01:56:45

32

类型C-s,然后键入当前字或键入C-w。作为奖励,您现在可以再次点击C-s来搜索该词。

这叫做增量搜索

+5

对于它的价值,我现在意识到了这个问题的意图:即使您在进行其他工作(如移动,打字等)时,也希望事件突出显示为“永久”(直到您关闭它)为止。搜索)将不起作用(突出显示为“临时”;您可以在缓冲区中移动,但很难进行新的编辑工作)。我使用(并且已经提出)'M-x highlight-regexp`解决方案(并将其绑定到快捷方式)。 – ShreevatsaR 2012-10-25 05:21:48

66

hi-lock建议是很好的。我觉得它更容易使用的Mx版本,虽然:

的Mxhighlight-regexpRET<REGEXP>

的Mxhighlight-phraseRET<REGEXP>

highlight-phrase只是有点糖的周围highlight-regexp忽略大小写并转换正则表达式中的空格以匹配任意的空格。便利。

13

我用的是闲置的亮点

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

M-X闲置高亮设置一个空闲计时器,突出所有出现在点下字的缓冲区。

要启用它为所有的编程模式,在~/.emacs.d/init.el

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

命令库highlight.el 让你(UN)高亮文本匹配的正则表达式(在这种情况下,一个符号),利用覆盖或文本属性。你可以在事件之间循环。突出显示可以是暂时的或持久的。 (more info)

2

尝试iedit。它突出显示了单词中的单词,并让您轻松编辑它的所有出现。通过额外的按键(C'),它隐藏了所有没有该单词的行。非常便利!

6

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

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

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

我现在使用这种东西多年。我最近添加了冻结。所以,也许有些事情是坏的。如果是这种情况,请在http://www.emacswiki.org/emacs/msearch或这里给我留言。

0

这也许将不突出,但将搜索词没有你需要键入它...

当你达到你想查的单词,CS,然后阅读完整的单词与CW那么你可以CS,它会搜索它。在我的Emacs中,它还高亮显示了文档中的所有实例。

相关问题