Ключ изменения режима гадюки <delete>
Я хочу использовать <delete>
ключ (я думаю, Cd) для удаления вперед в режиме viper.
Перед запуском Viper-режима, <delete>
работает правильно. В режиме гадюки, <delete>
переходит к последней строке буфера.
я добавил (setq viper-ex-style-editing nil)
к.viper и <backspace>
работает во всех режимах.
3 ответа
Попробуй это:
(define-key viper-vi-basic-map "\C-d" 'viper-delete-char)
(define-key viper-insert-basic-map "\C-d" 'viper-delete-char)
Теперь, который использует viper-delete-char
Команда должна соответствовать viper
, Если вы хотите обычное поведение удаления Emacs, используйте delete-char
вместо.
viper
реализован с использованием нескольких различных таблиц ключей, и выяснить, какие из них изменить, довольно сложно. Самый простой способ (обычно) - просто посмотреть на исходный код. Так что вы можете начать с Mx find-library viper. Примечание: большинство раскладок клавиш фактически определены в библиотеке viper-cmd
,
Клавиша \ переключится обратно в режим Emacs для одного нажатия клавиши, поэтому вы можете делать то, что ищете, с помощью "\
Хорошо, вот что ты делаешь.
(1) В режиме гадюки используйте C-h k
выяснить что <delete>
связан с. На всякий случай, если вы хотите, чтобы он был прикреплен к другому ключу.
(2) В другом режиме используйте C-h k
чтобы узнать, как называется функция, которая делает то, что вы хотите. Я думаю, что это delete-forward
но не верь мне, проверь. RMS имеет раздражающую тенденцию переименовывать вещи.
(3) Вернуться в использование буфера в режиме viper M-x local-set-key
установить, что вы хотите. Попытайся.
(4) Если вы счастливы, добавьте этот код в ваш.emacs
(defun fix-del-key-in-viper-mode ()
(define-key viper-mode-map "<delete>" your-desired-function))
(add-hook viper-mode-hooks fix-del-key-in-viper-mode)
Предупреждение, возможно, вам придется немного позаботиться об этом, потому что я не проверял это. В частности, убедитесь, что это действительно viper-mode-map
и не что-то еще, так как обозначение conventino не всегда соблюдается.