2013-02-15 7 views
12

Я использую Emacs в терминале Mac OS X, установленном с доморощенным.Как установить привязку клавиш CMD в Emacs?

Мой ключ CTRL - это мой ключ C, а ключ ALT - Meta.

Как определить привязки клавиш для комбинаций клавиш CMD?

Например, я хочу установить CMD- (стрелку вправо), чтобы перейти к концу строки.


EDIT

Я пытался @ предложения nickcarlo по ниже

(setq mac-command-modifier 'super) 
(global-set-key (kbd "s-<right>") 'move-end-of-line) 

Я не думаю, что ключ CMD создается в супер правильно, так как я не вижу s-foo в мини-буфер, как если бы я набрал C-x или M-x или что-нибудь еще. Я заметил, что CMD-right, когда я открываю два окна терминала, переключается между двумя терминальными окнами, поэтому я думал, что это может блокировать любые пользовательские настройки. Тем не менее, я попробовал:

(global-set-key (kbd "s-9") 'move-end-of-line) 

.. и CMD-9 по-прежнему не делает ничего, кроме звуковой сигнал, чтобы сказать мне, что я нажал что-то не так.

Установка не-CMD ключ-комбо, кажется, работает хорошо, как:

(global-set-key (kbd "C-w") 'move-end-of-line) 
+4

AFAIK, вы не можете сделать это до тех пор, как вы запустите Emacs внутри терминала. Модификатор Mac cmd не передается (и может даже не кодироваться в стандартных терминальных протоколах/наборах символов). Если вы хотите, чтобы это сработало, вы должны подумать о запуске Emacs.app в качестве приложения. –

ответ

11

Вы можете установить его с чем-то вроде:

(global-set-key (kbd "s-<right>") 'move-end-of-line) 

"s" является ссылкой на ваш ключ командной ,

PS: Я не нахожусь на своем mac прямо сейчас, поэтому я не уверен, что именно вам нужно написать, чтобы установить его на определенные вами ключи, чтобы переместить его в конец строки, но команда представлена s в emacs.

EDIT Только что испытал это на моем mac. Это точный код, который вы напишете (если вы хотите установить его по всему миру), чтобы связать вашу командную клавишу + стрелку вправо, чтобы переместить курсор в конец строки.

Если выше не работает, вы можете попробовать

(global-set-key (kbd "\s <right>") 'move-end-of-line) 

разница между выше, и это один является то, что выше приравнивает к CMD + вправо, и это одна приравнивает к CMD, а затем отпустить CMD и нажмите правую клавишу. Оба работают на OS X в моей системе.

Также проверьте следующее пост, чтобы установить CMD как супер ключ в случае, если ваш Emacs уже не зарегистрировать его как таковые:

http://ergoemacs.org/emacs/emacs_hyper_super_keys.html

В частности, вы можете использовать следующий код для установки вверх ваш ключ CMD как супер:

(setq mac-command-modifier 'super) 
+0

Не могу заставить это работать. Я должен сказать, что я использую Emacs Live - https://github.com/overtone/emacs-live .. однако, я попробовал простой ваниль emacs и все равно никакого результата. Этот код - https://github.com/lest/emacs-config/blob/master/rc-hotkeys.el - кажется, предполагает, что формат должен быть , но это все еще не работает. Это как будто привязка просто не регистрируется. – cannyboy

+0

@cannyboy Я получил свою копию Emacs из macports (port install emacs-app). Возможно, поэтому я могу заставить ее работать с приведенным выше кодом. Я никогда не использовал Emacs Live, поэтому я не уверен, как он отличается от того, что у меня есть. –

+0

@cannyboy После того, как вы написали эту строку или любую другую строку, подобную этой, перейдите в конец строки и выполните C-x C-e и посмотрите, отображает ли она имя функции в мини-буфере ниже. Вы также можете проверить привязки клавиш, выполнив C-h b и посмотреть, есть ли там список. –

1

Шаг 1: cx cf .emacs // открывается.файл Emacs

Шаг 2: Добавьте следующие строки в конце файла .emacs

;; changing the command to control 
    (setq mac-command-modifier 'control) 

Шаг 3: Сохранить файл .emacs

Шаг 4: Mx Eval-буфера // Mx = Alt -x // Это оценивает буфер .emacs и перезагружает Emacs

Шаг 5: Попробуйте CMD-e, чтобы перейти к концу строки. // Теперь CMD действует как управление

Шаг 6: Тем не менее CMD-e не перезагружает Emacs.

Наслаждайтесь использованием Emacs!

+0

Разве это не означает, что его командный ключ является его клавишей управления? Я не думаю, что он намеревается это сделать. –

+1

Я чувствую, что удобнее использовать cmd как cnt, это экономит много времени и уменьшает боль маленького пальца. – USK

+1

Я понимаю, что это, как представляется, общая практика сообщества OS X Emacs (не после меня, хотя, поскольку у меня есть ключ CMD, связанный с другими операциями). Я просто сказал, что я не думаю, что опубликованные намерены изменить свои операции Meta на его CMD-ключ. –

6

В Aquamacs, что работает для меня следующая

(global-set-key (kbd "A-r") 'my-command) 
+2

Большое спасибо. Это то, что я искал для своих Аквамаков :) – shivams

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