ключ изменения режима гадюки <delete>ключ - PullRequest
0 голосов
/ 01 июня 2011

Я хочу использовать клавишу <delete> (кажется, Cd) для удаления вперед в режиме viper.

Перед запуском режима viper <delete> работает правильно.В режиме viper <delete> переходит на последнюю строку буфера.

Я добавил (setq viper-ex-style-editing nil) в .viper и <backspace> работает во всех режимах.

Ответы [ 3 ]

2 голосов
/ 01 июня 2011

Попробуйте это:

(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 vip-библиотеки find . Примечание: Большинство раскладок клавиш фактически определены в библиотеке viper-cmd.

1 голос
/ 22 мая 2012

Клавиша \ переключится обратно в режим Emacs для одного нажатия клавиши, поэтому вы можете делать то, что вы ищете, с помощью "\ ", не внося никаких изменений и не добавляя код в ваш файл .emacs.

0 голосов
/ 01 июня 2011

Хорошо, вот что вы делаете.

(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 не всегда соблюдается.

...