Конвенція про використання Cx або Cc як префіксальних ключів


16

Які існують угоди по використанню C-x, C-cабо в M-якості ключів префікс?

Наприклад: є C-xі т.д. для збереження або відвідування буферів? Є C-cтощо для редагування тексту?

Фон

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


як M-xдля "виконання розширеної команди. Це шлюз для багатьох складних речей, які ви можете інтерактивно виконувати в Emacs; це дозволяє запускати будь-яку функцію Elisp по імені". це C-cі C-xнемає опису , як це?
Буратіно

Відповіді:


21

Якщо ви говорите про прив’язки ключів для власного користування, то це правило: ви можете зв'язати будь-які ключі, які вам подобаються.

Якщо ви хочете бути впевненим, що не зв’язуєте ключ, який може бути вже пов'язаний, тоді використовуйте C-cнаступну літеру. Усі такі ключі зарезервовані для користувачів (див. Далі).


Якщо ви говорите про прив'язуючі ключі в коді (наприклад, бібліотеці), який ви пишете, для використання іншими, то тут описані правила (конвенції): вузол " Прив'язка ключів " в посібнику Elisp.

Основні правила, пов’язані з тим, що ви запитуєте, - це щодо C-c:

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

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

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

  • Послідовності, що складаються з C-cбудь-яких інших пунктуацій або символів ASCII, виділяються для другорядних режимів. Використання їх у головному режимі не є абсолютно забороненим, але якщо ви це зробите, прив'язка основного режиму може час від часу затінятися незначними режимами.

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


Ви можете дістатися до цього документа в Emacs таким чином:

  1. C-h i, щоб відкрити Info, браузер doc.
  2. m el TAB RET, для m enu el isp ( 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немає опису , як це?
Буратіно
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.