質問
emacswiki 言う:
VIM(およびおそらくVI)のように、Viper StateとViper Insert State Stateをグローバルにする方法があります。 VIM(およびおそらくVI)では、通常モードで開始します。バッファを切り替えることができ、VIMは通常モードのままです。 「I」を押すと、VIMを挿入モードに配置します。次に、別のウィンドウをクリックしてバッファを切り替えると、VIMは挿入モードにとどまります。どのバッファがどのモードにあるかを覚えておく必要はありません。どのモードVIMがどのモードであるかを覚えておく必要があります。
しかし、残念ながら、彼らはこの方法が何であるかを言っておらず、私はすぐにそれを見つけることができませんでした。誰かが知っていますか?
解決
私はあなたが望むことをするための単一の設定やパッケージを知りません。 Viper自体によって提供されていません。
とはいえ、いくつか書くことができます 助言 どちらが仕事をしますか。重要なのは、バッファ/Windowsを切り替えるすべての方法をアドバイスする必要があることです。たとえば、Windowsを切り替えた場合 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 describe-key )あなたが助言するべき新しいものを見つけるために。
所属していません StackOverflow