我该如何取消将C-tab与jedi:complete绑定?

3
启用jedi-mode后,C-tab绑定了jedi:complete
如何解除绑定它,以便可以将其重新绑定到other-window
我尝试过:
  • (global-set-key (kbd "C-`") 'jedi:complete)
  • (global-set-key [C-tab] 'other-window)
  • (global-unset-key (kbd "<C-tab>"))
  • (defcustom jedi:key-complete (kbd "C-`") "Keybind for command `jedi:complete'." :group 'jedi)
但是没有一个能给我想要的结果。

1
一旦加载,可能会使用(define-key jedi-mode-map (kbd "C-tab") nil)。次要模式绑定将覆盖全局绑定。 - abo-abo
我不想解除所有的按键绑定。 - Bleeding Fingers
抱歉,忘记了关键子句。 - abo-abo
(kbd "<C-tab>") 应该就可以了。它能正常工作。你能把它添加为答案吗? - Bleeding Fingers
1个回答

3

您可以使用:

(define-key jedi-mode-map (kbd "<C-tab>") nil)

由于次要模式键绑定优先于全局键绑定,因此带有global的命令都不起作用。


为什么(local-unset-key (kbd "<C-tab>"))无效? - Bleeding Fingers
1
因为它没有在本地设置。有三个组:全局、本地和与模式相关的。本地和模式会覆盖全局。我认为本地会覆盖模式。但是一旦你移除本地,模式就重新生效了。以此类推。 - abo-abo
2
“local”键绑定几乎总是指主要模式的键映射。本地映射优先于全局映射,所有次要模式映射优先于本地和全局映射。因此,次要模式>主要模式>全局适用于键绑定。这是关键的部分,但还有更多内容,您应该查看,以便至少了解自己不知道的内容 :) - phils
我明白了。我知道local>global,但我以为它是一种单独的缓冲区本地机制。结果发现它只是修改当前的major-mode-map。 - abo-abo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接