Здравствуй, ЛОР.
Я тут решил в новом году серьезно подойти к GNU Emacs’у, который раньше использовал эпизодически только там, где не тянул Vim (для Латеха, иногда для автоматической обработки файлов).
Итак, я временно отключил Evil, и у меня теперь будет куча новичковых вопросов, позволь их задать.
И первое — это привычные мне по emacs-like режимам в GNU Readline и в GTK клавиши C-h, C-w и C-u (стереть символ, слово, строку), какие в самом-то Емаксе и отсутствуют. А точнее означают совсем другое.
Я не буду спрашивать, на что мне переназначить справку, вставку и «универсальный аргумент» (справку, очевидно, ни на что не надо — <F1> и так уже есть, остальное подумаю). А спрошу как, собственно, правильно сделать переназначение.
Если я правильно понял, в разных режимах по ним должны вызываться разные функции. Так сейчас бэкспэйс в минибуфере или буфере с человеческим текстом значит delete-backward-char
, но backward-delete-char-untabify
буфере с кодом. И это я еще никакие дополнительные пакеты не подключал, а они ведь, если что, именно клавишу бэкспэйс переопределять будут, а не функцию, верно?
Справка подсказывает, что можно сделать низкоуровневое переназначение:
(define-key key-translation-map (kbd "C-h") (kbd "DEL"))
(define-key key-translation-map (kbd "C-w") (kbd "<C-backspace>"))
(define-key key-translation-map (kbd "C-u") (kbd "<C-S-backspace>"))
(К слову, откуда такая неконсистенстность: почему именно DEL, <backspace> нельзя, но <C-backspace>, C-DEL нельзя?)
Но это ведь значит, что какая-нибудь C-c C-w (где бы и что бы она ни значила) перестанет работать, так?
Как же правильно?