1

EmacsWikiは次のように述べています。

Vim (およびおそらく vi) のように、Viper の状態と Viper の挿入状態をグローバルにする方法があります。Vim (およびおそらく vi) では、通常モードで開始します。バッファを切り替えることができ、Vim は通常モードのままです。「i」を押すと、Vim は挿入モードになります。次に、別のウィンドウをクリックしてバッファを切り替えると、Vim は挿入モードのままになります。どのバッファがどのモードであるかを覚えておく必要はありません。Vim がどのモードであるかだけを覚えておく必要があります。

しかし残念なことに、彼らはこの方法が何であるかを述べておらず、私はすぐに見つけることができませんでした. 誰か知っていますか?

4

1 に答える 1

3

私はあなたが望むことをするための単一の設定やパッケージを知りません。viper自体によって提供されるものではありません。

そうは言っても、あなたはその仕事をするいくつかのアドバイスを書くことができます。重要なのは、バッファ/ウィンドウを切り替えるすべての方法をアドバイスする必要があるということです。たとえば、other-windowコマンド(C-x 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)))

上記を使用しない別のメカニズムを使用してウィンドウ/バッファを切り替える場合は、少し掘り下げるだけで(M-x describe-key )、アドバイスする必要のある新しいことを見つけることができます。

于 2010-06-23T20:45:56.940 に答える