Emacs + Evil:非增量搜索和持续突出显示?

时间:2014-09-10 14:27:34

标签: vim emacs evil-mode

作为Vim用户,我在近二十年后尝试使用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(非增量搜索),亮点不会保留。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

要使'/'搜索像在vim中一样工作(在您再次搜索之前突出显示),请将其放在(require 'evil)之前:

(setq evil-search-module 'evil-search)