Вызвать одну команду в обычном режиме с помощью Ctrl-o в Vimpulse?

Обычное поведение в vim заключается в том, что C-o в режиме вставки позволяет пользователю использовать одну команду в обычном режиме, а затем вернуться в режим вставки.

Следуя предложениям в этом комментарии, я установил

(vimpulse-imap "\C-o" 'viper-escape-to-vi)

Но когда я нажимаю C-o в режиме вставки, символы «^O» вставляются в буфер, и я не могу переключиться в нормальный режим для одной команды, как я ожидаю. Я понимаю, что viper-escape-to-vi привязан к C-z по умолчанию, но я также не могу переключиться в нормальный режим с помощью этой комбинации клавиш (вместо этого в буфере печатается ^Z). Что я делаю неправильно?

Кроме того, второй вопрос: я бы хотел, чтобы C-z не был привязан к viper-mode (или vimpulse), так как я использую его для elscreen. Как я могу сказать ему оставить C-z в покое?

Редактировать: Нашел этот фрагмент кода в vimpulse-misc-keybindings.el:

;; temporarily escape to vi state
(define-key viper-insert-basic-map "\C-o" 'viper-escape-to-vi)

Так надо определиться уже? Не уверен, почему это не работает.


person hatmatrix    schedule 26.08.2011    source источник


Ответы (1)


Объявление 1) У меня работает, может что-то с конфигом пошло не так?

Но вывод странный: единственный способ получить его - вставить в кавычки (или аналогичный).

viper-escape-to-vi в состоянии вставки привязан к viper-toggle-key (но хорошо, что по умолчанию это C-z), поэтому см. ниже. Опять ваш вывод странный.

Объявление 2) Вы должны установить viper-toggle-key в sexp до загрузки viper, или настроить его.

Для первого (используя для этого клавишу Pause)

(setq viper-toggle-key [pause])
(require 'viper)

Вы должны попробовать evil, являющийся преемником vimpulse. Он идет хорошо и избавляется от гадюки.

Установка переключателя там (для повторной паузы) находится на расстоянии (evil-set-toggle-key "<pause>"), это последовательность kbd, а не секс-выражение. C-o тоже нормально работает.

person Michael Markert    schedule 27.08.2011
comment
Даже если я запускаю emacs с emacs -Q, а затем загружаю viper или vimpulse (устанавливая viper-toggle-key априори), я получаю ту же проблему. Я использую Emacs 24 в OS X, который я собрал из репозитория git - возможно, проблема в этом. Про зло не знал -- вроде еще не доросло, но C-o работает "из коробки"! - person hatmatrix; 28.08.2011
comment
Да, это может быть причиной, вы должны обратиться за помощью в список рассылки emacs-dev. Evil не очень зрелый с точки зрения времени, но он довольно стабилен и имеет полный набор функций (по сравнению с vimpulse - за исключением обширной документации). - person Michael Markert; 28.08.2011