Соглашение об использовании Cx или Cc в качестве префиксных ключей

16

Какие существуют соглашения по использованию C-x, C-cили в M-качестве ключей префикс?

Например: C-xи т. Д. Для сохранения или посещения буферов? И C-cт. Д. Для редактирования текста?

Фон

Может быть, это глупый вопрос. Я использую испанскую клавиатуру и иногда переопределяю сочетания клавиш, которые являются общими для английской (QWERTY) клавиатуры. Например: команда оболочки связана с ванильным Emacs M-!. M-¡Вместо этого я связываю это , потому что M-!есть M-shift-1, на который я не могу легко нажать. Мне интересно, есть ли соглашения, которые я переопределяю, когда я делаю такого рода изменения

anquegi
источник
Например, M-x«выполнить расширенную команду. Это шлюз ко многим сложным вещам, которые вы можете выполнять в Emacs в интерактивном режиме; он позволяет вам запускать любую функцию Elisp по имени». это C-cи C-xнет описания , как это?
Буратино

Ответы:

21

Если вы говорите о привязке ключей для вашего собственного использования, то это правило: вы можете связывать любые ключи, которые вам нравятся.

Если вы хотите быть уверенным, что вы не привязали ключ, который уже может быть связан, используйте C-cза ним букву. Все такие ключи зарезервированы для пользователей (см. Далее).


Если вы говорите о связывающих ключах в коде (например, в библиотеке), который вы пишете, для использования другими, то здесь описаны правила (соглашения): Соглашения о связывании ключей узла руководства Elisp.

Основные правила, касающиеся того, что вы спрашиваете, касаются C-c:

  • Не определяйте C-c LETTERкак ключ в программах на Лиспе. Последовательности, состоящие из C-cбуквы и буквы (в верхнем или нижнем регистре), зарезервированы для пользователей; они являются единственными последовательностями, зарезервированными для пользователей, поэтому не блокируйте их.

  • Последовательности, состоящие из C-cследующего за управляющим символом или цифрой, зарезервированы для основных режимов.

  • Последовательности , состоящие из C-cследует {, }, <, >, : или ;также зарезервированы для основных режимов.

  • Последовательности, состоящие из C-cлюбых других знаков препинания или символа ASCII, выделяются для второстепенных режимов. Использование их в основном режиме не является абсолютно запрещенным, но если вы это сделаете, привязка основного режима может иногда затеняться второстепенными режимами.

Вы заметите, что нет никаких соглашений относительно C-x. Однако это негласное соглашение или просто хороший совет / практика: если вы замените какую-то существующую стандартную привязку Emacs (то есть ту, которую вы получите из Emacs как распределенную, без загрузки каких-либо сторонних библиотек), это может привести к путанице или раздражать некоторых пользователей вашего кода.


Вы можете получить доступ к этому документу в Emacs следующим образом:

  1. C-h i, чтобы открыть Info, браузер документов.
  2. m el TAB RETЗа м еню эль исп ( TABв комплекте), или просто нажмите на Elispссылку с помощью мыши.
  3. key bi TAB, n TAB RETчтобы завершить Key Binding Conventions.

Или вы можете использовать iв руководстве Elisp, чтобы завершить записи индекса:

  1. C-h i m el TAB RET,
  2. i key bi TAB, которая завершает key bindingи показывает вам две возможности: key bindingи key binding, conventions for. Наберите , TABдля завершения до второго, затем RETдля подтверждения.
Нарисовалась
источник
Лучше следовать соглашению, чтобы связывать C-cи отправлять команды пользователю. Таким образом, можно (почти) быть уверенным, что он не отменяет какую-либо другую привязку из основного режима, который уже установлен или будет установлен когда-нибудь в будущем.
Тобиас
1
@Tobias: Не уверен, что вы говорите. Лучше чем что? Все ключевые связывания конвенций должны соблюдаться, в том числе не обязывающего C-c+ ПИСЬМА в библиотеке третьей стороной.
Дрю
Вы правильно указали в первых предложениях своего ответа, что не существует строгих правил для частного использования. Тем не менее, по причинам, которые я привел в своем первом комментарии, рекомендуется следовать соглашениям о пользовательских сочетаниях клавиш. Может быть, вы могли бы добавить примечание о том, что под вашим все идет правило , в первом разделе. Это все, что я хотел сказать, Дрю. С наилучшими пожеланиями,
Тобиас
3
@Tobias: я добавил то, что я думаю, что вы говорите; Благодарю. Но нет никаких соглашений для пользователя, чтобы следовать в отношении привязки клавиш. В «конвенции для пользователей привязок» , что вы говорите о не условна для пользователей. Это соглашения для кодирования Lisp, которые будут использоваться другими. (Я знаю, что вы это знаете. Просто хочу прояснить это, для всех, кто читает это.)
Дрю
Что такое управляющий персонаж?
Дидье А.
2

@ Ответ Дрю гораздо более детальный и детальный.

Это совершенно правильный вопрос! Существует соглашение, что C-xзарезервировано самим emacs, тогда как C-cпрефикс используется для пользовательских комбинаций клавиш.

Посмотрите на это , особенно на раздел «Зарезервированные ключи». Я почти уверен, что эта информация также указана в руководстве по emacs, но я не могу найти ее прямо сейчас. Соглашения описаны в этом разделе руководства по emacs lisp.

Панагиотис Кутсуракис
источник
1
C-cсопровождаемый буквой (нижний или верхний регистр) без дополнительных модификаторов зарезервирован для пользователей. Многие другие последовательности клавиш, начинающиеся с C-c, зарезервированы для основных режимов - особенно те, в которых вторая клавиша также модифицируется управляющей клавишей.
Тобиас
Вы правы, конечно. @Drew ответил на этот вопрос намного лучше.
Панагиотис Кутсуракис
Например, M-x«выполнить расширенную команду. Это шлюз ко многим сложным вещам, которые вы можете выполнять в Emacs в интерактивном режиме; он позволяет вам запускать любую функцию Elisp по имени». это C-cи C-xнет описания , как это?
Буратино