Emacs - ключевые вопросы - PullRequest
       6

Emacs - ключевые вопросы

3 голосов
/ 12 января 2011

Я успешно использовал Ctrl + Shift + Up ' Ctrl + Shift + вниз '

Ctrl + Shift + влево ' Ctrl + Shift + вправо для различных команд. Но когда я

пытался использовать Ctrl + s для команды save-buffer и Ctrl + Shift + s , что

эквивалентно Ctrl + S , для другой команды возникли проблемы.

save-buffer работает нормально, но когда я набираю Ctrl + Shift + s , это оправдывает

команда save-buffer. Я использовал Ctrl + q , чтобы найти контрольные последовательности

Ctrl + s и Ctrl + Shift + S , я получаю тот же результат, который равен ^ S .

Я ожидаю, что получу ^ s за Ctrl + s , но это не так.

Кто-нибудь знает причину?

Другой квест: я использую Ctrl + c для команды killing-ring-save. В этом

В случае

все команды (которые имеют большое количество) начинаются с Ctrl + c сейчас не работают.

Есть ли способ заменить префикс Ctrl + c другим настроенным префиксом?


Я могу задать свой вопрос в неправильном направлении. Я использую Ctrl + C как

убийство кольцо сохранение. Он отлично работает в Emacs (без режима). Но если я открою файл .c (режим C), то

когда я набираю Ctrl + c , он ждет, когда я наберу другую клавишу. Я думаю, что в этом случае

ctrl + c считается префиксом. В этом случае мне нужны следующие модификации:

Используя пользовательский префикс, скажем Ctrl + a , как Ctrl + c ; Удалить

префикс Ctrl + c ; Использование Ctrl + c в качестве killing-ring-save.

Я добавляю следующее в мои ~ / .emacs:

(global-set-key (kbd "C-a") -специфическая карта режима)

(глобальный набор ключей (kbd "C-c") 'kill-ring-save)

(global-set-key (kbd "C-f") 'isearch-forward)

(глобальный набор ключей (kbd "C-v") 'yank)

(глобальный набор ключей (kbd "C-s") 'буфер сохранения)

(defun my-c-initialization-hook ()

(определение-ключ-c-mode-base-map (kbd "C-a"), зависящее от режима-map)

(определить ключ c-mode-base-map (kbd "C-c") 'kill-ring-save))

(add-hook 'c-initialization-hook' my-c-initialization-hook)

Но это не работает. Ctrl + c по-прежнему считается префиксом, поэтому я не могу его использовать

как kill-ring-save. Кроме того, если я наберу Ctrl + a Ctrl + c , он скажет, что это не

определено. (Я думал, что это будет иметь тот же результат, как я наберу Ctrl + c Ctrl + c )

Ответы [ 3 ]

3 голосов
/ 12 января 2011

Привязка C-c сложна, режим CUA хорошо ее решает, заставляя ее делать kill-ring-save, только когда у вас отмечен регион.

1 голос
/ 20 августа 2011

Во-первых, Control-S - это управляющий символ ASCII - ^s и ^S - это один и тот же символ.

Однако ключи отличаются от символов, и если вы используете Emacs стогда в оконном менеджере можно различить клавиши Cs и CSs .Последний - Control-Shift-s.

Проблема, с которой вы сталкиваетесь, заключается в том, что, если вы явно не связываете сдвинутую версию буквенного ключа, тогда сдвинутый буквенный ключ использует привязку несмещенного ключа.Это «особенность».

Так что вам нужно связать оба Cs и CSs .

(global-set-key (kbd "C-s") 'save-buffer)
(global-set-key (kbd "C-S-s") 'another-command)
0 голосов
/ 12 января 2011

Если вы запускаете emacs в терминале, то причиной проблемы shift-ctl-c может быть драйвер терминала.В этом случае введите команду stty stop undef, затем снова запустите emacs и посмотрите, не влияет ли это на проблему.Также посмотрите, не возникнет ли у вас такая же проблема с shift-ctl- другими буквами

...