2

ansi-term でうまく動作しないパッケージ (悪) があります。term-modeがアクティブなときにemacsでevil-modeを無効にしようとしています。次のコマンドを使用してそうしようとしています

(add-hook 'term-mode-hook (lambda() (evil-mode -1)) )

ただし、これにより、ansi-term を開くと、term-mode を除くすべてのモードで悪モードが何らかの形で無効になります。どんな助けでも大歓迎です。

4

4 に答える 4

5

コードをざっと見てみると、evil-modeこれはグローバル マイナー モードであり、すべてのバッファに影響します。

関数turn-on-evil-modeとは、現在のバッファーに対してのみ Evil を有効または無効にするために提供されています (これらの関数は、バッファーごとのモードであるturn-off-evil-modeenable または disableです)。ただし、グローバル マイナー モードは、モード フックが実行された後に有効になります (グローバル マイナー モードを自動的に無効にするを参照)。特定のメジャー モードの場合) したがって、グローバル モードに、特定の状況でそれ自体を無効にするサポートが組み込まれているかどうかを確認することをお勧めします。evil-local-mode

悪モードの場合、さまざまな「状態」オプションがこれを容易にしているように見えます。「Emacs 状態」( "emacs") はすべての悪のキー バインディングを無効(evil-set-initial-state MODE STATE)にし、指定されたメジャー モードのデフォルト状態を構成できるようにします。

したがって、非互換性がキーバインディングよりも深く実行されない限り、Evil ライブラリをロードした後、次のようにするとうまくいくと思います。

(evil-set-initial-state 'term-mode "emacs")
于 2013-10-28T04:13:45.817 に答える
4

この潜在的なバグを再現できたことに驚きました。

C-z解決策は、バッファという用語を使用することです。邪悪なモードから抜け出すだけです。

于 2013-10-27T22:39:59.510 に答える