Які пакети доступні для модального редагування?


13

Які пакети доступні для модального редагування в Emacs? Що ви використовуєте і для чого?

Спробуємо опублікувати один пакет за відповідь. Пропоную згадати переваги та недоліки кожної упаковки.


Ось моє визначення модального редагування (я не зміг знайти виділену статтю Wikipeadia):

Модальне редагування - стиль редагування тексту, коли користувач періодично перемикається між «звичайним режимом», коли клавіші не викликають вставлення їх символів, але виконують різні операції над текстом та «режим вставки», коли клавіші вставляють відповідні символи. Можливо, може бути більше режимів. Більшість сучасних редакторів не є модальними. Прикладом модального редактора тексту є Vi (Vim).


А що таке "модальне редагування"?
Lindydancer

@Lindydancer, я додав свою спробу пояснити концепцію до питання.
Марк Карпов

Відповіді:


13

evil, E xtensible VI L ayer для Emacs

Сумнівна назва, окрім цього, evil- це сучасний стан, коли справа стосується vimемуляції в Emacs (і, можливо, в будь-якому іншому випадку). Він підтримує безліч функцій, які уникають інші пакети емуляції Vim, включаючи:

  • vim текстооб'єкти
  • vim регістри
  • vim клавіатурні макроси
  • ex команди

Переваги

  • Ключова сумісність vimозначає, що ви не втрачаєте м’язової пам’яті під час переходу на системи без Emacs.
  • Дуже зрілий і широко використовується (наприклад, багато пакетів спільноти)
    • Багато пакетів для vimбули перенесені в evil.
  • vim Граматика стилю є модульною і дуже добре піддається розширенню користувачів
  • evil сама по собі дуже розширюється: створюйте власні текстові об’єкти, оператори та рухи!

Недоліки

  • Напевно, знадобиться певна обманка, щоб вона добре грала з іншими пакетами
    • На щастя, evilнайбільш поширені випадки використання смішними є легкими.
  • evilє дуже складною системою. Злому зла ядра може стати досить задіяною.
  • vimклавіші не обов'язково ергономічно оптимальні. Іноді вони можуть почуватися трохи довільно, коли переносяться в іншу систему.
  • Розміщений на BitBucket (ртутний) зроби це з того, що ти будеш.

Я вважав, що абревіатура зла для розширюваного шару vi для Emacs трохи неприємна.
Ім'я

@Name не моя ідея, але як це?
PythonNut

зі словника: зло = Глубоко аморальне та злісне, що втілює чи пов’язане із силами диявола, шкідливим, надзвичайно неприємним,
Ім'я

5
@ Ім'я, як хтось, хто дав йому ім'я "Ім'я", я думаю, ви оцінили б використання гумору під час називання речей. :-) У випадку Зла це іронія (див. En.wikipedia.org/wiki/Irony#Definitions ). Я думаю, що це одне з найкращих імен, що коли-небудь давалися пакету Emacs, і перерахував би це як перевагу!
Тарсій

@PythonNut Я думаю, що використання Bitbucket є меншою проблемою (насправді зовсім не проблемою), ніж використання Mercurial.
Тарсій

11

Є god-mode( https://github.com/chrisdone/god-mode ), який використовує стандартні прив'язки клавіш Emacs, але усуває необхідність утримувати модифікатори. Якщо режим God-mode увімкнено, C-...прив'язки не вимагають модифікатора, а для M-...прив'язки використовується префікс, а не модифікатор.

Як приклад зі сторінки github:

До: Cp Ck Cn M- ^) Cj Cy Mr Cx zz M-2 Mg Mg Cx Cs

Після: pkng ^) jygr. . 2 ggxs


1
Будь ласка, розгорніть свою відповідь, тому це не лише посилання.
Марк Карпов

@Stefan - я взяв на себе сміливість трохи розширити вашу відповідь. Не соромтеся змінюватись, як би ви хотіли.
глюкас

glucas: Спасибі! @ Марк: не знаючи нічого більше про режим бога, я не міг легко розширити свою відповідь. Я розмістив це з надією, що хтось, як глюкас, заповнить заготовки.
Стефан

6

Modalka має бути новітньою дитиною в блоці редагування модалів . Проект github, здається, вже 10 днів. У мене не вистачає часу на використання, щоб коментувати чи оцінювати, але ось як це описано:

Цей комплект побудови допомагає перейти до редагування мод у Emacs. Основна мета пакету - зробити модальний редагування в Emacs максимально природним та рідним. Немає жодного злому, жодних кутових випадків та емуляції - просто почніть редагувати модально так, як вам потрібно.

Документація також порівнює і протиставляє Modalka з іншими загальними модальними рішеннями, такими evil, god-mode, boonі т.д.


6

Додаю своє, дякую @Mark за заохочення.

Xah Fly Ключі

Розроблений з нуля для emacs, з метою бути найбільш ефективною системою, з багаторічного досвіду роботи в режимі ergoemacs. Ключові варіанти - це наука, якомога більше заснована на статистиці ключової частоти та ключових балів, простих для натискання. Команди, що найчастіше використовуються, відображаються на найпростіші клавіші. Інші питання, такі як групування та прив'язка біграми, також розглядаються з 3-х років щотижневого експерименту.

Цікаві бали:

  • Усі команди Cx виконуються послідовністю від 2 до 3 окремих клавіш. У xah-fly-клавішах Cx ніколи не потрібен. М- ніколи також не потрібно.
  • Не суперечить жодним клавішам GNU emacs, оскільки він не пов'язує Ctrl або Meta (крім C-7, C-8, але не є істотним). Ви можете увімкнути xah-fly-клавіші у режимі вставки та використовувати GNU Emacs так, як зазвичай.
  • Також розглянуто, який набір команд призводить до максимальної ефективності редагування. Отже, в пакеті використовується ~ 80 спеціальних команд редагування. (наприклад, копія скопіює поточний рядок, якщо немає вибору. Одна єдина команда для перемикання регістру букв, замість ~ 6 варіантів GNU Emacs у верхньому / нижньому / регіоні / без регіону.)
  • Реалізація максимально проста. Ніяких макросів, жодних порад, ніякого складного перекомпонування ключів, не використовується лише пара гачків. (Добре чи погано?!)
  • Підтримується понад 10 макетів клавіатури, серед яких: QWERTY, dvorak, colemak, colemak-mod-dh, qwerty-abnt, qwertz, azerty, programer-dvorak, workman, norman.

Недоліки:

  • Як і навчання вперше, вам знадобиться місяць.
  • Менш відомий, ніж злий режим.
  • Для основних режимів все ще потрібно використовувати Cc. (тож для вирішення цієї проблеми ви можете використовувати інші пакети, такі як режим бог або гідра.)

Я автор, тому попередити, що я можу бути несвідомо упередженим. Не соромтесь коментувати або виправляти.


Будь-який шанс підтримати інші розкладки клавіатури? Я знаю, що робить ErgoEmacs. Я можу спробувати, але планка переходу на Дворак зависока для випадкового експерименту.
PythonNut

@PythonNut так, головний пріоритет. Сподіваюся, через тиждень. Головне - зрозуміти, як я хочу це здійснити.
Xah Lee

Ага. Дуже круто. Я дам йому кружляння, коли воно вийде.
PythonNut

4

Добре

Boon - один з менш відомих пакетів для модального редагування. Він не імітує Vi (або Vim), але забезпечує оригінальний макет, оптимізований для розкладки клавіатури Colemak.

Переваги та принципи дизайну

  • Просторове розподілення по-перше, мнемоніка друге: розподіл клавіш командам базується в пріоритеті на розташуванні клавіш на клавіатурі. Те, що надруковано на кришці ключа, є другорядним питанням.

  • Легкі рулони пальців: звичайна комбінація має бути чергуванням лівої / правої руки або легкими рулонами однією рукою.

  • Використання домашнього ряду та міцних пальців для найбільш використовуваних команд

  • Проста навігація: багато команд пов'язані з навігацією. Це полегшує пересування. Оскільки рухи вдвічі збільшуються як визначення регіонів, це робить команди управління (оператори) більш потужними.

Недоліки

  • Вам потрібно заново дізнатися, як взаємодіяти з редактором, оскільки збірка редагуючих примітивів та їх розміщення на клавіатурі досить унікальні.

1
Звучить дещо дивно, що Буну насправді не байдуже, що на клавіші, але примушує ключі бути Колемаком. Це звучить так, як це має бути макет агностиком.
PythonNut

@PythonNut, я думаю, людям потрібно якось посилатися на ключі :-) Я думаю, що цілком можливо змусити його працювати з іншими макетами.
Марк Карпов

Зараз у Boon є підтримка QWERTY та QWERTZ, див. Сторінку github.com/jyp/boon#installation . Я оновив відповідь, щоб це відобразити.
raju-гіркі

3

Ergoemacs також підтримує модальне редагування. Він не імітує vi, але використовує клавішу Alt для найбільш часто використовуваних команд. Наприклад, курсор, що рухається, - Alt плюс перевернутий правою рукою T. (У QWERTY це Alt+ jдля left, Alt+ lправоруч, Alt+ iдля upі Alt+ kдля down). Видалення знака чи слова здійснюється за Altдопомогою лівих клавіш домашнього ряду. Вибір клавіш базується на частоті команд та позиції клавіш для зручності натискання.

  • Щоб розпочати модальне редагування, користувач може натиснути f6.
    • Після f6натискання клавіші, що найчастіше використовуються, більше не потребують комбінації клавіш alt.
    • Тому на QWERTY jє left, jє right, iє upі kзнижується).
  • Режим модальної команди вийшла натискання return, f6або escape.

На додаток до традиційної модальної парадигми, існує квазімодальна парадигма, яка дозволяє досягти будь-якої C-xабо C-cкомбінації клавіш без використання будь-яких модифікаторів (наприклад, God-mode).

  • Квазімодальний запуск починається з QWERTY apps fдля C-cпри натисканні клавіші управління та QWERTY apps dдля C-x.
  • Виконуючи цю послідовність appsклавіш, ключ змінить тип модифікаторів, які, як передбачається, будуть натиснуті.
  • Після виклику команди ergoemacs відновлює режим редагування.
  • Під час будь-якої послідовності клавіш ви також можете змінювати типи клавіш, які утримуються. Це просто натискаючи appsклавішу ще раз.

Окрім зміни командних клавіш, режим ergoemacs дозволяє змінювати речі про послідовність клавіш під час набору тексту:

  • Ви можете редагувати аргумент префікса протягом середини послідовності клавіш, натискаючи f2.
  • Натискання backspaceповертає останню натиснуту клавішу.
  • Apps дозволяє змінювати утримувані клавіші під час будь-якої послідовності клавіш.

ergoemacs-mode також намагається поважати все, що режим робить до основних клавіш. Наприклад, якщо в org-режимі визначається спеціальна клавіша для next-line, ergoemacs використовує цю команду для Alt+, kколи в org-режимі.

Переваги:

  • Частина GNU Emacs, в ELPA.
  • Підтримує «універсальні» ключі Windows / Linux поза коробкою. наприклад, Відкрити ( C-o), Закрити ( C-w), Вибрати все ( C-a), Копіювати ( C-c), Вирізати ( C-x), Вставити ( C-v) тощо.
  • Досить популярний.
  • Підтримує безліч макетів, включаючи Qwerty, dvorak, colemak, bepo та багато інших міжнародних макетів, які регулюють клавіші, щоб переконатися, що вони перебувають у домашньому ряду (Mi в QWERTY було б Mu в колектив).
  • Показує зображення розкладки клавіатури в emacs, описуючи тему.
  • Клавіші налаштовуються за допомогою системи розширення, створюючи тему.
  • Ви можете встановити будь-яку довільну модальну карту (ще не задокументована).

Недоліки:

  • Стабільність повільна при запуску.
    • У нестабільному майстрі перший запуск відбувається повільно (~ 5 секунд для мінімальної настройки), (~ 20 секунд для мого запуску)
    • Другий другий запуск набагато швидший (для моєї складної установки це ~ 4 секунди).
    • Це відбувається тому, що режим ergoemacs змінюється і кешується кожною активною клавішною карткою в emacs. При другому запуску ці параметри зберігаються.
  • Складний код.

Дивіться https://github.com/ergoemacs/ergoemacs-mode


2

Ще один напівмодальний варіант - гідра:

https://github.com/abo-abo/hydra

За даними веб-сайту

Уявіть, що ви пов’язали Cc j та Cc k у своєму конфігурації. Ви хочете викликати Cc j та Cc k у деякій (довільній) послідовності. Hydra дозволяє:

  • Пов’яжіть свої функції таким чином, що натискання Cc jjkk3j5k еквівалентне натискання Cc j Cc j Cc k Cc k M-3 Cc j M-5 Cc k. Будь-який ключ, крім j або k, виходить з цього стану.

  • Призначте для цієї групи функцій спеціальний підказку, щоб ви відразу після натискання клавіші Cc дізналися, що ви можете продовжувати роботу з j або k.

Я не користувався цим, але це здається цікавим.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.