jua*_*jux 5 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)
Run Code Online (Sandbox Code Playgroud)
使用/密钥进行Evil搜索时,只要按下任何其他移动键(如j键,但使用C-s(emacs内部i-search),高亮显示就会删除增量内容以及高亮显示.亮度保持不变.使用C-s RET(非增量搜索)高亮显示不会留下来.
好的,找到了突出显示的有效解决方案:
(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))
Run Code Online (Sandbox Code Playgroud)
这将突出显示使用 isearch 或 Evil search 完成的所有搜索。该突出显示将一直保留,直到您拨打另一电话或致电highlight-remove-all。我已将其映射到leader SPC:
(evil-leader/set-key "SPC" 'highlight-remove-all)
Run Code Online (Sandbox Code Playgroud)
PS:我制作了一个包,它已经在 melpa 上,名称为“evil-search-highlight-persist”并且: https: //github.com/juanjux/evil-search-highlight-persist