Emacs: как выбрать хорошие пользовательские привязки клавиш?

10

Я новичок в Emacs, и я хотел бы начать добавлять некоторые глобальные пользовательские привязки клавиш для общих задач, таких как replace-string, replace-regexи т. Д., Которые не имеют их по умолчанию. Я хочу сделать правильный выбор и вижу несколько проблем:

  • Просмотреть все мои варианты - Как я могу увидеть полный диапазон клавиш, которые не связаны во всех режимах, которые я регулярно использую?

  • Совместимость / соглашение. Существуют ли общие неофициальные привязки или общий ключ «пространства пользователя», с которого можно начинать персональные пользовательские привязки?

  • Другие вопросы - Что еще я должен принимать во внимание?

Ян Маккиннон
источник

Ответы:

9

Попробуйте взглянуть на этот вопрос о SO: есть ли какие-либо комбинации клавиш emacs, зарезервированные для пользовательских команд?

Что касается того, что доступно, есть unboundбиблиотека (см. Первый ответ на вопрос выше).

Одно соглашение (взято из моего ответа на этот вопрос ):

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

Как пользователь, вы можете переопределить любой ключ; но обычно лучше придерживаться последовательности клавиш, состоящей из следующей C-c за ней буквы (верхнего или нижнего регистра). Эти ключи «зарезервированы для пользователей», поэтому они не будут конфликтовать с каким-либо должным образом разработанным расширением Emacs. Функциональные клавиши F5через F9также зарезервированы для пользователей. Если вы переопределите какой-либо другой ключ, ваше определение может быть переопределено некоторыми расширениями или основными режимами, которые переопределяют тот же ключ.

Просто помните, что привязки клавиш различны в каждом из различных (основных и вспомогательных) режимов, поэтому то, что доступно в одном буфере, не обязательно доступно в другом. И сделайте привязки клавиш максимально локализованными. Например, если функциональность что-то делает со строкой кода, не привязывайте к ней глобальный ключ, определите ее в соответствующих таблицах ключей ( c++-mode-map, ruby-mode-mapи т. Д.).

Что касается ваших конкретных задач, вы заметили:

  • M-% ака query-replace
  • C-M-% ака query-replace-regexp

Кроме того, когда вы ищете ( C-sили C-M-s(и обратные варианты)), вы можете ввести M-%(или C-M-%), чтобы напрямую ввести query-replace( query-replace-regexp) со строкой поиска в качестве замены ... Довольно удобно.

Трей Джексон
источник