Notepad ++具有一个方便的功能:如果您在文本中选择一个单词(不一定是关键字),则该单词将在整个文本中突出显示。可以在Emacs中完成吗?如果是这样,怎么办?
它不一定必须完全像Notepad ++一样工作(即通过选择)。理想情况下,我想设置一个按键绑定,使所有在光标下出现的单词都突出显示。
这将是巨大的,如果亮点是永久性的,即运动点从突出显示的文字应远离不引起被删除的亮点。
同样,如果有一种解决方案可以使高亮之间导航(使用自定义键绑定),将很有用。
Answers:
您可能正在寻找http://nschum.de/src/emacs/highlight-symbol/上的Highlight-symbol.el :
这些hi-lock
建议是好的。我认为使用这些M-x版本更容易:
M-x highlight-regexp
RET <REGEXP>
M-x highlight-phrase
RET <REGEXP>
highlight-phrase
只是highlight-regexp
忽略了大小写并在正则表达式中转换一个空格以匹配任意空格而已。便利。
M-x unhighligh-regex
key-chord:C-x w r
...此外,突出显示短语也不完全区分大小写。仅(单词的)首字母小写使ae不区分大小写。(我想是要处理fred
vs的Fred
)..例如,它生成一个正则表达式,例如:[Cc]at[ ]+[Dd]og
unhighlight-regexp
改为,而不是unhighligh-regex
(missingt
和p
)。
键入C-s
,然后键入当前单词或类型C-w
。作为奖励,您现在可以C-s
再次点击以搜索该单词。
这称为增量搜索。
M-x highlight-regexp
解决方案(并将其绑定到快捷方式)。
我用的是高亮显示
http://www.emacswiki.org/emacs/IdleHighlight
Mx idle-highlight设置一个空闲计时器,该计时器突出显示该点下方单词缓冲区中的所有事件。
要在所有编程模式下启用它,请在~/.emacs.d/init.el
:
;; highlight words
(add-hook 'prog-mode-hook (lambda () (idle-highlight-mode t)))
尝试http://www.emacswiki.org/emacs/msearch.el 用光标选中的所有出现的文本都会突出显示。您必须将鼠标拖到要突出显示的字符串上。这样一来,您便可以轻松更改选择而无需更改突出显示。
如果要保留字符串的突出显示,可以将其冻结。
您可以将一个缓冲区奴役到另一个缓冲区。在主缓冲区中选择的文本也将在从属缓冲区中突出显示。这对于比较缓冲区很有用。当您在另一个缓冲区中调查文本时,在一个缓冲区中记笔记也很有用。您可以在注释缓冲区中包含一组关键字。将关键字拖到该关键字上,它在调查文本中的出现将突出显示。
我已经用了好几年了。我最近添加了冻结功能。所以,也许有些东西坏了。如果是这种情况,请在http://www.emacswiki.org/emacs/msearch或此处给我留言 。
没有人提到symbol-overlay
模式。基本上是对的更好重写highlight-symbol-mode
。如上的“更好”,缺少原始突出显示符号的错误(例如,临时突出显示被卡住,或者临时突出显示消失以在突出显示的单词内移动;或者无法突出显示类似的符号*
),因此更好地集成和维护了。请参阅其自述文件的“优点”段落。
您可以使用M-xpackage-install 进行package-list-packages
常规安装(请确保先使用来更新软件包列表)。作为参考,我在底部附加了用于启用该模式并禁用一些您可能想要或不想要的更高级功能的代码。
Notepad ++具有一个方便的功能:如果您在文本中选择一个单词(不一定是关键字),则该单词将在整个文本中突出显示。可以在Emacs中完成吗?如果是这样,怎么办?
启用overlay-symbol
后,超时后您将光标放在其上的每个单词都会显示在屏幕上(默认超时为0.5s,可以用symbol-overlay-idle-time
变量配置)。如果一个单词没有突出显示,则意味着屏幕上只有一个匹配项(您将光标放在该匹配项上),因此无需突出显示该匹配项。
如果突出显示是永久的,那就太好了,也就是说,远离突出显示单词的移动点不应导致突出显示被删除。
为了永久突出显示光标下的单词,有一个功能 symbol-overlay-put
。要取消突出显示,请再次调用。
在我的配置示例中,它绑定到Logo+`键。
(require 'symbol-overlay)
(defun enable-symbol-overlay-mode ()
(unless (or (minibufferp)
(derived-mode-p 'magit-mode)
(derived-mode-p 'xref--xref-buffer-mode))
(symbol-overlay-mode t)))
(define-global-minor-mode global-symbol-overlay-mode ;; name of the new global mode
symbol-overlay-mode ;; name of the minor mode
enable-symbol-overlay-mode)
(global-symbol-overlay-mode) ;; enable it
(global-set-key (kbd "s-`") 'symbol-overlay-put)
(setq symbol-overlay-ignore-functions nil) ;; don't ignore keywords in various languages
(setq symbol-overlay-map (make-sparse-keymap)) ;; disable special cmds on overlays
symbol-overlay-mode
正是我想要的。绑定symbol-overlay-put
到F键对于在文件中切换给定单词的突出显示非常方便。
库中的命令highlight.el
允许您使用覆盖或文本属性(取消显示)与正则表达式(在本例中为符号)匹配的文本。您可以在事件之间循环。突出显示可以是临时的也可以是永久的。(更多信息)。
Melpa works中提供了此软件包,您也可以自定义突出显示样式。
https://github.com/ignacy/idle-highlight-in-visible-buffers-mode