求助,终端下,emacs 绑定键问题?

我在使用 dired-sidebar 的时候, 在 gui 的Emacs下,快捷键都是正常的。

这是 查看 TAB键的 功能:

但是在 终端下, TAB键 就不是这个功能了,

请问有什么办法可以 重新绑定 TAB键的功能 到 dired-sidebar-subtree-toggle 上 ?

在终端底下 tab和C-i是同一个键,而且是不可区分的。 在终端底下 (unless (display-graphic-p),把这四个键都绑定到一个函数底下,可以确保不出意外:

"TAB", "C-i", [C-i], [tab]

终端吞掉的键其实还有很多,比如 C-m 是回车,C+数字键基本都不能用,C-S-xxx 基本都不能用。所以在终端里尽量的使用leader键,使用序列键而不是组合键。

1 个赞

终端下用 (kbd "<tab>")

看看这个项目 GitHub - CyberShadow/term-keys: Lossless keyboard input for Emacs ,我自己没有绑定很多键,没有使用,但是可能会解决你的问题。

有点复杂啊,水平不够, 根本看不懂啊

能否 举个例子

(define-key corfu-map (kbd "<tab>") 'eat/corfu-complete)

怎么绑定呢?

 (unless (display-graphic-p)
  (with-eval-after-load 'evil
    (evil-define-key 'normal dired-sidebar-mode-map "RET" 'dired-sidebar-find-file)
    (evil-define-key 'normal dired-sidebar-mode-map "C-m" 'dired-sidebar-find-file)))

我这样 也没作用啊

major-mode 也是 对的。

复制粘贴 这两行 然后 把引号改成方括号 [C-m] 和 [return]

哪两行啊? 哪两行啊?

没有 效果啊,感觉是 major-mode 不对,但是 去查 确实是

dired-sidebar-mode

C-s 的问题怎么破?

(progn
  (general-define-key :states 'normal :keymaps
                      '(dired-mode-map)
                      [return]
                      (lambda nil
                        (message dog)))
  (general-define-key :states 'normal :keymaps
                      '(dired-mode-map)
                      "C-m"
                      (lambda nil
                        (message dog)))
  (general-define-key :states 'normal :keymaps
                      '(dired-mode-map)
                      [C-m]
                      (lambda nil
                        (message dog)))
  (general-define-key :states 'normal :keymaps
                      '(dired-mode-map)
                      "RET"
                      (lambda nil
                        (message dog)))
  )

我使用 doomemacs,doomemacs是 map! 宏来展开 general.el 来定义 keymap 的,我宏展开了以后是长这样子的

还得是 general 啊