Вопрос

Emacswiki говорит:

Существует способ сделать Viper State и Viper Insert State Global, как в VIM (и, вероятно, VI). В Vim (и, вероятно, VI) вы начинаете в нормальном режиме. Вы можете переключить буфер, а VIM остается в нормальном режиме. Нажатие «я» помещает VIM в режим вставки. Затем, если вы переключаете буферы, нажав на другое окно, Vim остается в режиме вставки. Вам не нужно помнить, какой буфер находится в каком режиме, вам нужно только помнить, в каком режиме Vim.

Но, к сожалению, они не говорят, что это за метод, и я не смог найти его быстро. Кто -нибудь знает?

Это было полезно?

Решение

Я не знаю ни одного настройки или пакета, чтобы делать то, что вы хотите. Это не предоставлено самой гадюкой.

Тем не менее, вы можете написать немного совет что делает работу. Ключом является то, что вам нужно посоветовать все способы переключения буферов/окон. Например, если вы переключаете окна через other-window команда (Cx o), вам понадобится это:

(defadvice other-window (around other-window-maintain-viper-state activate 
                         activate)
  "when switching windows, pull the viper-current-state along"
  (let ((old-window-state viper-current-state))
    ad-do-it
    (viper-change-state old-window-state)))

Но переключение окон с использованием мыши не проходит эту функцию, и для того, чтобы заставить ее работать, вам нужно посоветовать select-window точно так же:

(defadvice select-window (around select-window-maintain-viper-state activate 
                          activate)
  "when switching windows, pull the viper-current-state along"
  (let ((old-window-state viper-current-state))
    ad-do-it
    (viper-change-state old-window-state)))

Если вы обнаружите, что используете другой механизм для переключения Windows/Buffers, который не использует вышеизложенное, он просто требует небольшого количества копания (MX описать ключ ) выяснить, что новая вещь вы должны консультировать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top