Какие пакеты доступны для модального редактирования в Emacs? Что вы используете и почему?
Давайте попробуем опубликовать один пакет за ответ. Предлагаю упомянуть преимущества и недостатки каждой упаковки.
Вот мое определение модального редактирования (я не смог найти отдельную статью в Википедии):
Модальное редактирование - стиль редактирования текста, когда пользователь периодически переключается между «обычным режимом», когда клавиши не вызывают вставку своих символов, но выполняют различные операции над текстом, и «режимом вставки», когда клавиши вставляют соответствующие символы. Там может быть больше режимов, конечно. Большинство современных редакторов не являются модальными. Примером модального текстового редактора является Vi (Vim).
key-bindings
prefix-keys
Марк Карпов
источник
источник
Ответы:
evil
, То Е xtensible В.И. л Эйер для EmacsПомимо сомнительного названия,
evil
это текущее состояние дел, когда дело доходит доvim
эмуляции в Emacs (и, возможно, в любом другом месте, если на то пошло). Он поддерживает множество функций, от которых отказываются другие пакеты эмуляции Vim, включая:vim
textobjectsvim
регистрыvim
макросы клавиатурыex
командыпреимущества
vim
означает, что вы не потеряете мышечную память при переходе на системы без Emacs.vim
были портированы наevil
.vim
грамматика стиля является модульной и очень хорошо подходит для расширения пользователяevil
само по себе очень расширяемо: создавайте свои собственные текстовые объекты, операторы и движения!Недостатки
evil
делает самые распространенные варианты использования смехотворно легкими.evil
это очень сложная система. Взлом на ядре зла может стать довольно сложным делом.vim
сочетания клавиш не обязательно эргономически оптимальны. Иногда они могут чувствовать себя немного произвольно при переносе в другую систему.источник
Существует
god-mode
( https://github.com/chrisdone/god-mode ), который использует стандартные привязки клавиш Emacs, но устраняет необходимость удерживать модификаторы. Когда включен режим God,C-...
привязки не требуют модификатора, аM-...
привязки используют префикс, а не модификатор.Как пример со страницы github:
источник
Добавляю свою, спасибо @Mark за поддержку.
Xah Fly Keys
Разработанный с нуля для emacs, с целью быть наиболее эффективной системой, из многолетнего опыта работы в режиме ergoemacs. Ключевые варианты выбора основаны на науке в максимально возможной степени, основаны на статистике частоты и ключевой легко нажимаемой оценки. Наиболее часто используемые команды отображаются на наиболее простые для нажатия клавиши. Другие вопросы, такие как группировка и биграмма связывания клавиш, также рассматриваются в течение 3 лет еженедельного эксперимента.
Интересные моменты:
Недостатки:
Я автор, так что предупреждаю, что я могу быть неосознанно предвзятым. Не стесняйтесь комментировать или исправить.
источник
Модалка должна быть самым новым ребенком в модальном блоке редактирования. Проект github, кажется, всего 10 дней. У меня недостаточно времени для комментирования или оценки, но вот как это описано:
Документация также сравнивает и противопоставляет Modalka с другими общими модальными решениями, такими
evil
,god-mode
,boon
и т.д.источник
благодеяние
Boon - один из менее известных пакетов для модального редактирования. Он не эмулирует Vi (или Vim), но обеспечивает оригинальную раскладку, оптимизированную для раскладки клавиатуры Colemak.
Преимущества и принципы дизайна
Во-первых, пространственное распределение, затем мнемоника: распределение клавиш для команд в приоритетном порядке зависит от расположения клавиш на клавиатуре. Все, что напечатано на колпачке клавиатуры, является второстепенной задачей
Легкие рулоны пальцев: обычная комбинация должна быть чередованием левой / правой руки или легкими рулонами одной рукой.
Использование домашнего ряда и сильных пальцев для наиболее часто используемых команд
Простая навигация: многие команды связаны с навигацией. Это облегчает передвижение. Поскольку движения удваиваются как определения регионов, это делает команды манипуляции (операторы) более мощными.
Недостатки
источник
Ergoemacs также поддерживает модальное редактирование. Он не эмулирует vi, но использует клавишу Alt для наиболее часто используемых команд. Например, движущимся курсором является Alt плюс правая инвертированная буква T (в QWERTY это Alt+ jдля left, Alt+ lдля правой, Alt+ iдля upи Alt+ kдля down). Удаление символа или слова производится Altлевой клавишей домашнего ряда. Выбор клавиш основывается на частоте команд и положении клавиш для удобства нажатия.
В дополнении к традиционной модальной парадигме, существует квази модальная парадигма , которая позволяет любому
C-x
илиC-c
комбинации клавиш , чтобы быть достигнута без использования каких - либо модификаторов (например , режим бога).C-c
при нажатой клавише управления и QWERTY apps dдляC-x
.В дополнение к изменению командных клавиш, ergoemacs-mode позволяет вам изменить последовательность клавиш при ее наборе:
ergoemacs-mode также пытается уважать все, что режим делает с основными ключами. Например, если org-mode определяет специальный ключ для
next-line
, ergoemacs использует эту команду для Alt+ kв режиме org-mode.Преимущества:
C-o
), Закрыть (C-w
), Выбрать все (C-a
), Копировать (C-c
), Вырезать (C-x
), Вставить (C-v
) и т. д.Недостатки:
Смотрите https://github.com/ergoemacs/ergoemacs-mode
источник
Другой полу-модальный вариант - это Hydra:
https://github.com/abo-abo/hydra
По данным сайта
Представьте, что вы связали Cc j и Cc k в вашей конфигурации. Вы хотите вызвать Cc j и Cc k в некоторой (произвольной) последовательности. Гидра позволяет вам:
Свяжите свои функции таким образом, чтобы нажатие Cc jjkk3j5k эквивалентно нажатию Cc j Cc j Cc k Cc k M-3 Cc j M-5 Cc k. Любой ключ, кроме j или k, выходит из этого состояния.
Присвойте пользовательскую подсказку этой группе функций, чтобы сразу после нажатия Cc вы знали, что вы можете выполнить j или k.
Я не использовал это, но это кажется интересным.
источник