2013-03-30 5 views
0

Я пытаюсь создать комбинацию клавиш.Emacs multi keyboard shortcut

Вот пример:

(define-key my-minor-mode-map (kbd "x f") "\C-x\C-f") 

(редактирование:. Спасибо вам Стефан за указание на пространство между \ Сх и \ Cf)

Это, однако, берет меня к случайному файлу и описать ключ говорит следующее:

Macro: C-x C-f 
Keyboard macro. 

Так что я не совсем уверен, что это значит. Кажется, что попытка привязки s к C не работает (как и другие интерактивные команды, такие как C-r и M-x).

Это делает работу:

(define-key my-minor-mode-map (kbd "x f") "\M-f") 

Поэтому в основном я хочу, чтобы иметь возможность запускать C-х C-F (найти-файл) без необходимости печатать «найти-файл в качестве самой функции.

Иными словами; Я не хочу этого:

(define-key my-minor-mode-map (kbd "x f") 'find-file) 

Я надеюсь, что кто-то может помочь мне с этим. Мои знания emacs очень ограничены.

Заранее спасибо.

Полный код:

(defvar my-minor-mode-map (make-keymap) "my-minor-mode keymap") 
(define-key my-minor-mode-map (kbd "x f") "\C-x\C-f") 
(define-minor-mode my-minor-mode 
"My minor-mode" 

t "My minor mode" 'my-minor-mode-map) 
(defun my-minibuffer-setup-hook() 
    (my-minor-mode 0)) 
"My minor-mode" 

Edit:

Что бы даже лучше, если бы я мог это сделать:

(define-key my-minor-mode-map (kbd "x") "\C-x") 
(define-key my-minor-mode-map (kbd "f") "\C-f") 

И потом, если я типа "XF", что оно будет вызывать «\ Cx Cf» aka find file. Таким образом, мне не пришлось бы выписывать все возможные комбинации клавиш.

ответ

2

Я не совсем уверен, что вы считаете, что должно происходить, но я подозреваю, что вы на самом деле хотите это:

(define-key my-minor-mode-map (kbd "x f") (key-binding (kbd "C-x C-f"))) 

что то же самое, что код, который вы сказали, что вы не хотите использование:

(define-key my-minor-mode-map (kbd "x f") 'find-file) 

за исключением того, что он получает функцию динамически, основываясь на привязке клавиш.

p.s. Также немного странно, что вы используете смесь kbd и не kbd синтаксиса в той же форме.

+0

Спасибо!Это прекрасно работает. – Attic

3

"\C-x \C-f" имеет 3 элемента: C-x, SPC и C-f. Вероятно, вы не хотели, чтобы это место было там.

+0

Благодарим за внимание, но я все равно не желаю результата. Когда я использую описательный ключ, я получаю: Макро: C-x C-f. Когда я запускаю его, он берет меня в случайный файл. Я также заметил, что попытка привязки s к C не работает (как и другие интерактивные команды, такие как C-r, M-x и т. Д. – Attic

Смежные вопросы