Rebind C-space in Emacs

自古美人都是妖i 提交于 2019-12-09 16:41:06

问题


I've tried various version to no avail:

(global-set-key (kbd "C-<space>") 'tempo-complete-tag)

(global-set-key [C-space] 'tempo-complete-tag)

I'm using CUA mode and running Emacs on Ubuntu, version: GNU Emacs 23.1.50.1 (x86_64-pc-linux-gnu, GTK+ Version 2.18.0) of 2009-09-27 on crested, modified by Debian

When I run tempo-complete-tag manually it tells me it is bound to C-space but C-space still runs cua-set-mark (or if CUA is disable, set-mark-command).

How can I rebind the C-space shortcut in Emacs to a command I decide?


回答1:


C-h k (key) will tell you how Emacs refers to a given key (which is "C-SPC" in this instance). (global-set-key (kbd "C-SPC") 'tempo-complete-tag) will do what you want.

I always use the (kbd) function for key-bindings, as it allows you to refer to the key the same way it is typically written everywhere else.

Do keep in mind that C-SPC is a standard set-mark-command binding! Personally I'd pick something different :)




回答2:


Also keep in mind that "global-set-key" will only do what you want, if your mode doesn't override it. I'm too lazy to load tempo to see if it does indeed override C-SPC, but it might well do so, in which case, you want to put this in your .emacs:

(add-hook 'tempo-mode-hook
          (lambda ()
            (local-set-key (kbd "C-SPC") 'tempo-complete-tag)
            ))



回答3:


Alternative syntax for key binding is via vector:

(global-set-key [?\M-\ ] 'cycle-spacing)
(global-set-key [?\C-\ ] 'tempo-complete-tag)


来源:https://stackoverflow.com/questions/3227039/rebind-c-space-in-emacs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!