Ключ изменения режима гадюки <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 для одного нажатия клавиши, поэтому вы можете делать то, что ищете, с помощью "\", не внося никаких изменений и не добавляя код в ваш файл.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 не всегда соблюдается.

Другие вопросы по тегам