Пересвязать C-пространство в Emacs

Я пробовал разные версии безрезультатно:

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

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

Я использую режим CUA и запускаю Emacs в Ubuntu, версия: GNU Emacs 23.1.50.1 (x86_64-pc-linux-gnu, GTK+ версия 2.18.0) от 2009-09-27 на гребне, модифицированном Debian

Когда я бегу tempo-complete-tag вручную он говорит мне, что он связан с C-пространством, но C-пространство все еще работает cua-set-mark (или если CUA отключен, set-mark-command).

Как я могу привязать ярлык C-space в Emacs к команде, которую я решу?

3 ответа

Решение

C-h k (key) расскажет вам, как Emacs ссылается на данный ключ (в данном случае это C-SPC). (global-set-key (kbd "C-SPC") 'tempo-complete-tag) будет делать то, что вы хотите.

Я всегда использую (kbd) функция для привязки клавиш, так как она позволяет ссылаться на клавишу так же, как она обычно пишется везде.

Имейте в виду, что C-SPC является стандартом set-mark-command связывание! Лично я бы выбрал что-то другое:)

Также имейте в виду, что "global-set-key" будет делать только то, что вы хотите, если ваш режим не отменяет его. Я слишком ленив, чтобы загрузить темп, чтобы увидеть, действительно ли он отменяет C-SPC, но вполне возможно, что в этом случае вы захотите поместить это в ваш.emacs:

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

Альтернативный синтаксис для привязки ключа через вектор:

(global-set-key [?\M-\ ] 'cycle-spacing)
(global-set-key [?\C-\ ] 'tempo-complete-tag)
Другие вопросы по тегам