如何让emacs保持我的isearch字符串突出显示?

时间:2010-09-23 15:19:49

标签: emacs

如何让emacs突出显示我正在搜索的短语,然后保持突出显示直到我搜索另一个短语?它是否可以透明地执行此操作,即仅通过搜索,而不必在之后运行另一个命令(如isearch-highlight-regexp)?

4 个答案:

答案 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))