doom 的 occur-mode 里面没有 evil 按键的绑定,有人知道怎么弄么?

embark 有些时候 export 结果的时候会使用 occur-mode 的 buffer,但是这个 buffer 里面没有 vim 按键绑定,用着很别扭,这个有办法处理么?我感觉这个是 doom emacs 的 bug。。

我看 evil-collections 里面是有关于 occur-mode 的代码的。。

我直接使用的是 evil-collections 没有任何问题。

可以看一下变量evil-collection-mode-list是否包括了replace

有唉。。。

(2048-game ag alchemist anaconda-mode apropos arc-mode atomic-chrome auto-package-update beginend bm bookmark
           (buff-menu "buff-menu")
           calc calendar cider cmake-mode comint company compile consult corfu
           (custom cus-edit)
           cus-theme daemons dashboard deadgrep debbugs debug devdocs dictionary diff-hl diff-mode dired dired-sidebar disk-usage doc-view docker ebib ebuku edbi edebug ediff eglot explain-pause-mode elfeed eldoc elisp-mode elisp-refs elisp-slime-nav embark emms epa ert eshell eval-sexp-fu evil-mc eww fanyi finder flycheck flymake forge free-keys geiser ggtags git-timemachine gnus go-mode grep guix hackernews helm help helpful hg-histedit hungry-delete ibuffer image image-dired image+ imenu imenu-list
           (indent "indent")
           indium info ivy js2-mode leetcode lispy log-edit log-view lsp-ui-imenu lua-mode kotlin-mode macrostep man
           (magit magit-repos magit-submodule)
           magit-section magit-todos markdown-mode monky mpc mu4e mu4e-conversation neotree newsticker notmuch nov
           (occur replace)
           omnisharp org org-present org-roam osx-dictionary outline p4
           (package-menu package)
           pass
           (pdf pdf-tools)
           popup proced prodigy profiler python quickrun racer racket-describe realgud reftex restclient rg ripgrep rjsx-mode robe rtags ruby-mode scheme scroll-lock selectrum sh-script shortdoc simple simple-mpc slime sly snake so-long speedbar tablist tar-mode telega
           (term term ansi-term multi-term)
           tetris thread tide timer-list transmission trashed tuareg typescript-mode vc-annotate vc-dir vc-git vdiff vertico view vlf vterm vundo w3m wdired wgrep which-key woman xref xwidget yaml-mode youtube-dl zmusic
           (ztree ztree-diff))

确认了应该就是 doom emacs 的 bug。对新的 evil-collection 支持的有问题,把 evil-collection 回退到 0.0.8 版本就可以了。

我也遇到了这个问题,好像是因为 evil-collection 把涉及 occur 的程序文件换了位置并改了名字。

我没有回滚,通过在配置文件中加入这个可以解决:

(after! evil
  (add-to-list 'evil-collection-mode-list 'replace))

应该和这位的意思一样(注意,并不是包括(occur replace),而是replace

1 个赞

突然发现还是不能用,之前稀里糊涂可以用的,可能是没调试好……

又看了一下代码,在.doom/config.el里加上这个就可以了(虽然提 PR 修复一下更直接)

(after! evil
  (add-to-list 'evil-collection-mode-list 'replace)
  (delete '(occur replace) evil-collection-mode-list)
  (advice-remove 'occur-mode #'doom--transient-8-h)
  (unintern 'doom--transient-8-h nil)
  (add-transient-hook! 'occur-mode
    (+evil-collection-init 'replace)))