#vim #emacs #hotkeys
Можно ли в Emacs переназначить часть операций с текстом/файлами под более привычные(удобные)
для себя комбинации клавиш, без конфликтов с другими командами? Или стоит изучить те
которые по умолчанию? Пробовал Vim, но там ІМНО не стоит изменять хоткеи по умолчанию,
да и там все довольно логично,да и много команд реализуются одной клавишей, так что
не увидел особой необходимости в замене.
Ответы
Ответ 1
Стандартные сочетания архаичны и загадочны, существует несколько подходов в основе.
Хорошие примеры: Evil Mode (vim-аддиктам), Spacemacs, Ergo Emacs, Boon, fingers.
Технической проблемы тут нет, это вопрос эргономики и управления сложностью конфигурации.
Вот из Vim на EMACS можно перейти только благодаря Evil-mode, ценой громоздкого конфига,
однако с божьей помощью можно отказаться от Evil-mode, сохранив при том модальность.
К вопросу, HJKL по-умолчанию в EMACS выполняют несущественные функции (С-h дублируется
), следовательно, такое можно и перемапить. FBNP-навигацию же, естественную для EMACS,
и C-x-... M-x-..., C-c-..., повсеместно используемое - проще оставить нетронутым:
(use-package god-mode
:bind ( ( "M-i" . god-local-mode )
( "" . god-local-mode )
( "C-j" . next-line )
( "C-k" . previous-line )
( "C-h" . backward-char )
( "C-l" . forward-char )
( "C-d C-f" . delete-forward-char )
( "C-d C-b" . backward-delete-char-untabify )
( "C-d C-e" . kill-line )
( "C-d C-w" . delete-trailing-whitespace )
( "C-d C-a" . delete-to-begin ) ) )
В стиле Vi, одну клавишу можно использовать для целого ряда действий. Например, удаление
строки dd, до конца строки: de, до начала строки: da, вперёд: df, назад: db etc.
См. также Hydras.
Хороший стиль - повторные нажатия одной клавиши + модификатор: v - старт выделения
слова, повторное v - expand-region (увеличить выделение), M-v - contract-region (уменьшить
выделение), Shift-V - выделение строки, но и стандартный C-Space продолжает работать.
Вариант простого конфига в этом духе
Есть альтернативы god-mode, например Modalka.
Ответ 2
Попробовал различные варианты.
IMHO стоит изучить клавиатурные комбинации установленные по умолчанию, т.к. и в справке
и разной документации везде идут именно они. Как вариант можно назначать неиспользуюмые
комбинации или клавиши под свои задачи.
Ну, а насчет переназначения стандартных клавиатурных сокращений, то как писал в комментариях
@avp, просто потом нужно переназначить и ту функцию, комбинацию которой переназначили
другой функции.
Например, хотим функцию undo включать по C-z. Смотрим чем занято C-z, нажимаем
C-h k C-z:
C-z runs the command suspend-frame, which is an interactive compiled
Назначаем этой функции другую комбинацию.
Ответ 3
CUA-mode
остальное как угодно.