Режим гадюки во всех режимах - PullRequest
7 голосов
/ 06 декабря 2009

Я перехожу из vi в emacs и, используя viper и vimpulse, становится довольно раздражающим, когда я C-w C-w в окно и не могу вернуться к исходному с той же командой, потому что другой буфер, буфер справки, не в режиме Viper. Как я могу это исправить?

Я попытался добавить другие режимы в конфигурацию viper и заставить их запускаться с включенным режимом viper по умолчанию, используя перехватчики:

(add-to-list viper-vi-state-mode-list 'help-mode)
(add-hook 'help-mode (lambda () (setq viper-mode t)))

Но ни одна из этих команд не сработала. Фактически, первый выдал следующую ошибку:

Warning (initialization): An error occurred while loading `/home/konrad/.emacs.d/init.el':

Wrong type argument: symbolp, (fundamental-mode ...

Кроме C-w C-w, я также скучаю по тому, что не могу ориентироваться с помощью hjkl. Разве нет способа повторно использовать сочетания клавиш, установленные viper, вместо повторного связывания их для каждого режима?

Ответы [ 3 ]

3 голосов
/ 06 декабря 2009

Ошибка в том, что вы забыли процитировать переменную viper-vi-state-mode-list примерно так:

(add-to-list 'viper-vi-state-mode-list 'help-mode)

См. этот вопрос о том, почему вам нужно цитировать 'viper-vi-state-mode-list.

Но это не решило проблему для меня, вот как я заставил C-w C-w работать так, как вы хотите:

(define-key help-mode-map (kbd "C-w C-w") 'vimpulse-cycle-windows)
3 голосов
/ 06 декабря 2009

Синтаксис для добавления перехвата в справочный режим будет выглядеть следующим образом:

(add-hook 'help-mode-hook (lambda () (viper-mode t)))

Обратите внимание, что переменная ловушки названа "-hook", и setq здесь не работает, потому что viper-mode - это команда, а не переменная.

Вы можете получить все режимы для активации Viper с помощью:

(add-hook 'fundamental-mode-hook (lambda () (viper-mode t)))

, поскольку все режимы наследуются от основного режима.

1 голос
/ 28 декабря 2009

Посмотрите, что я нашел: http://www.emacswiki.org/emacs/viper-in-more-modes.el

...