evil-search visual mode下默认把region里的字符用来搜索

差点忘了这回事了……我是这么写的:

  (defun moon-put-region-in-search-history (count)
    "Put region into evil-search history.
COUNT is passed to evil-search command."
    (when (evil-visual-state-p)
      (let ((region (buffer-substring-no-properties
                     ;; evil seems to treat point differently,
                     ;; so I added 1 to end point
                     (region-beginning) (1+ (region-end)))))
        (push region evil-ex-search-history)
        (setq evil-ex-search-pattern (evil-ex-make-search-pattern region))
        ;; (push region evil-ex-s)
        (evil-normal-state)
        )))
  (advice-add 'evil-ex-search-forward :before #'moon-put-region-in-search-history)

@amosbird 谢谢你的指点 :smile:

这行比较关键:

 (setq evil-ex-search-pattern (evil-ex-make-search-pattern region))

更新evil-ex-search-pattern才能让gn指向选中的region。

最终的效果是:

  1. 选中region
  2. /,region自动加入搜索历史
  3. esc退出搜索
  4. cgn开始修改
  5. .重复修改

当然可以吧这个advice做成command绑定到一个键上,就不用/esc按两个键了。