如何让emacs突出显示我正在搜索的短语,然后保持突出显示直到我搜索另一个短语?它是否可以透明地执行此操作,即仅通过搜索,而不必在之后运行另一个命令(如isearch-highlight-regexp
)?
答案 0 :(得分:20)
试试这个:
(setq lazy-highlight-cleanup nil)
如果您想手动清除突出显示,请执行 M-x lazy-highlight-cleanup
答案 1 :(得分:5)
Trey的回答似乎有效。为了完整起见,我以为我会包含一个使用建议的人:
(defadvice isearch-exit (after ysph-hl-search activate compile)
"after isearch, highlight the search term "
(highlight-regexp (car (if isearch-regexp
regexp-search-ring
search-ring)) (find-face 'hi-pink)))
答案 2 :(得分:0)
另一个选择是使用highlight-phrase或highlight-regexp,而不依赖于完成工作的搜索系统。
答案 3 :(得分:0)
搜索完成后,此变体结合了惰性突出显示和正则表达式高亮显示。这类似于emacs中vim的hlsearch
行为。
(setq lazy-highlight t ; highlight occurrences
lazy-highlight-cleanup nil ; keep search term highlighted
lazy-highlight-max-at-a-time nil ; all occurences in file
isearch-allow-scroll t ; continue the search even though we're scrolling
)
;; when exiting isearch, register the search term as regexp-highlight
(defadvice isearch-done (after ysph-hl-search activate compile)
"highlight the search term after isearch has quit"
(unhighlight-regexp t)
(highlight-regexp (car (if isearch-regexp
regexp-search-ring
search-ring)) 'lazy-highlight))