一般情况下 tab 键会被转换成 TAB,而 C-i 也会被转换成 TAB(其实这俩是一个东西)。如果单独绑定了 <tab> 的话,那么 tab 键就不会被转换,会直接传递 <tab>。但是小写的 <tab> 和大写的 TAB 并不是同一个按键,所以原本绑定到 TAB 上的命令就调用不了了。
我想把 tab 键和 C-i 分开,同时不影响已经绑定了的命令,有什么办法吗?
一般情况下 tab 键会被转换成 TAB,而 C-i 也会被转换成 TAB(其实这俩是一个东西)。如果单独绑定了 <tab> 的话,那么 tab 键就不会被转换,会直接传递 <tab>。但是小写的 <tab> 和大写的 TAB 并不是同一个按键,所以原本绑定到 TAB 上的命令就调用不了了。
我想把 tab 键和 C-i 分开,同时不影响已经绑定了的命令,有什么办法吗?
;; 取消这几个按键的特殊转换
(define-key input-decode-map [?\C-m] [C-m])
(define-key input-decode-map [?\C-i] [C-i])
(define-key input-decode-map [?\C-.] [C-.])
谢谢指导!不过用了这种方法的话 C-i 得写成 <C-i>,请问有没有不带尖括号的方法?
不要去绑定 TAB 而是把原先要绑定到 TAB 上的命令绑到 <tab>上,就解放 C-i了应该。
<tab> 指向 TAB , TAB 指向 C-i , 而 C-i 绑定缩进,因此无论是按 <tab> 还是 C-i 都是缩进,
并且无论是为 TAB 还是 C-i 绑定功能,<tab> 这个按键的功能都会随之变化,除非在源头上为 <tab> 绑定功能