evil中gt在dired buffer中和默认t冲突,请问如何处理?

gt在其它文件buffer中可以切换tab,在dired buffer中,gt和dired中默认的t冲突,导致无法切换tab,请问这种情况如何处理呢?

无法复现,可能是别的什么包影响了。

在dired中,按t的时候会触发

(dired-toggle-marks)

在evil中按gt时t会触发(dired-toggle-marks) 而不会切换tab

抱歉,我的配置居然没有问题,试了下 emacs -Q 复现了。


搜了下因为 evil 给 dired 特别定义了evil/evil-keybindings.el at master · emacs-evil/evil · GitHub (也即没有绑定 gt, gT)

可以 (setq evil-want-keybinding nil) 或自行绑定

源码中evil定义了t触发dired-toggle-marks ,gt切换tab,这个怎么处理会兼容呢?

这不是 evil-collections 的么,t 和 gt 不冲突,你感觉冲突是因为 evil 在 dired 下没有绑定 gt

1 个赞

多谢回复,请问evil怎样在dired mode下绑定gt呢?

evil源码中已经设置gt,不清楚的是为何会在dired mode中失效

(when (featurep 'tab-bar)
  (define-key evil-normal-state-map "gt" 'tab-bar-switch-to-next-tab)
  (define-key evil-normal-state-map "gT" 'tab-bar-switch-to-prev-tab))

我上面说了并给出链接了

设置 (setq evil-want-keybinding nil) 之后gt没有生效,还是无法切换tab。怎样让gt在dired mode中切换tab呢?

最小配置没有问题,请在加载 evil-mode 前设置,或说提供你的配置

;;; emacs -Q -l ~/.config/emacs/test.el

(setq package-archives '(("melpa"        . "https://melpa.org/packages/")
                         ("gnu"          . "https://elpa.gnu.org/packages/")
                         ("nongnu"       . "https://elpa.nongnu.org/nongnu/")))

(package-initialize)
(package-refresh-contents)
(package-install 'evil)

(setq evil-want-keybinding nil)
(evil-mode 1)
1 个赞

请问这最小配置为何显示symbol‘s function definition is void: evil-mode

改了,加了安装你试下

多谢编辑,刚刚显示package ‘evil-‘ is unavailable

先执行一次 (package-refresh-contents) 或加到安装前面

多谢你的回复!目前gt是可以切换tab的。