5

在成为 Vim 用户近 20 年后,我正在尝试 Emacs+Evil。我正在将我的大部分 Vim 配置转移到 Evil,但我遇到很多问题的一件事是设置搜索和突出显示,就像我在 Vim 中使用的那样。我想要得到的是非增量搜索和高亮保留,直到我手动清除它们或进行另一次搜索。

我在我的配置文件中设置了这些设置:

;; keep the search highlights
(setq lazy-highlight-cleanup nil)
(setq lazy-highlight-max-at-a-time nil)
(setq lazy-highlight-initial-delay 0)

使用/Evil 的键进行搜索会执行增量操作,并且只要我按下任何其他移动键(如j键,但使用C-s(emacs 内部 i-search)高亮仍然存在。使用C-s RET(非增量搜索)高亮显示)没有留下。

4

2 回答 2

3

好的,找到了突出显示的有效解决方案:

(defun highlight-remove-all ()
  (interactive)
  (hi-lock-mode -1)
  (hi-lock-mode 1))

(defun search-highlight-persist ()
  (highlight-regexp (car-safe (if isearch-regexp
                                  regexp-search-ring
                                search-ring)) (facep 'hi-yellow)))

(defadvice isearch-exit (after isearch-hl-persist activate)
  (highlight-remove-all)
  (search-highlight-persist))

(defadvice evil-search-incrementally (after evil-search-hl-persist activate)
  (highlight-remove-all)
  (search-highlight-persist))

这将突出显示使用 isearch 或 Evil 搜索完成的所有搜索。突出显示将一直存在,直到您进行另一个或调用highlight-remove-all。我已将其映射到leader SPC

(evil-leader/set-key "SPC" 'highlight-remove-all)

PS:我做了一个包,它已经在 melpa 上,名称为“evil-search-highlight-persist”,并且:https ://github.com/juanjux/evil-search-highlight-persist

于 2014-09-18T01:13:28.090 回答
2

要使 '/' 搜索像在 vim 中一样工作(高亮一直存在,直到您再次搜索),请将其放在您之前(require 'evil)

(setq evil-search-module 'evil-search)
于 2015-12-13T14:37:58.650 回答