2010-06-23 3 views
1

EmacsWiki says:Создание Viper состояния глобальной

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

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

+1

Глядя на код гадюки, я не вижу, как это можно сделать - есть множество переменных состояния гадюки, которые определены как локальные буферы. И, к сожалению, не существует «набора-буфер-крючок», который вы можете использовать для запуска поведения, которое вы хотите при переключении буферов. –

+0

Спасибо! Да, это несчастливо. –

ответ

3

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

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

(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))) 

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

Смежные вопросы