Я пытаюсь использовать разные сочетания клавиш для базового перемещения и удаления в emacs. Я бы хотел использовать следующие сочетания клавиш:
- Ctrl + i / k / j / l: вверх / вниз / влево /правильно
- Ctrl + u / o: назад / вперед слово
- Ctrl + d / f: удалить влево / вправо
- Ctrl + e / r: удалить слово слева / справа
- Ctrl + Alt + e / r: удалить до начала / конца строки
- Ctrl + c / x / v: копировать / вырезать / вставить
- Ctrl + m Alt + m: история поиска назад / вперед
- и т.д
Что мне удавалось заставить работать в большинстве случаев. Тем не менее, я все еще сталкиваюсь с двумя проблемами:
- Привязка клавиш к некоторым основным режимам имеет приоритет над моими настройками. Например, в каком-то режиме Python C-j может быть установлено значение newline-and-indent, и мне нужно выяснить каждую проблему для каждого второстепенного режима, который я использую, найти правильную раскладку клавиатуры и освободить мой ключ. Скучный.
- В некоторых основных режимах используются слегка измененные команды для основных движений. Например, org-mode может использовать org-end-of-line для C-e вместо end-of-line. Это позволяет перейти в конец строки, не учитывая теги справа. Или какой-то режим изменит команду удаления назад на настраиваемую, более подходящую для желаемой задачи. То же самое для C-n и C-p, которые часто меняют значение через режимы. Это некоторые синусоидальные функции, которые я хотел бы использовать без их явного поиска, поиска их имен команд, повторной привязки их для каждого основного режима, который я использую. Я хочу, чтобы мой C-k работал так же, как C-n в каждом используемом мной режиме, без необходимости что-либо делать.
Итак, мой вопрос: как я могу создать второстепенный режим, содержащий все мои привязки клавиш, который предшествовал бы привязкам клавиш всех других режимов, и который делал бы что-то вроде:
Cn: "пожалуйста, привяжите Ck (я предпочитаю движение вниз) любой команде Cn, которая должна быть привязана в этом режиме "
Я предполагаю, что мне нужно создать для этого второстепенный режим, возможно, придется загружать его через перехватчик перед каждым основным режимом и использовать некоторую функцию emacs, которая возвращает функцию, привязанную к заданной привязке клавиш.
Есть идеи, как это сделать?