簡體   English   中英

在 emacs term-mode 中禁用包

[英]Disabling a package in emacs term-mode

我有一個不適合 ansi-term 的包(evil)。 當 term-mode 處於活動狀態時,我試圖讓 emacs 禁用邪惡模式。 我正在使用以下命令嘗試這樣做

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

但是,一旦我打開 ansi-term,這會以某種方式禁用除 term-mode 之外的所有模式中的邪惡模式。 任何幫助,將不勝感激。

快速查看代碼會發現evil-mode是全局次要模式,因此它會影響所有緩沖區。

函數turn-on-evil-modeturn-off-evil-mode僅用於啟用或禁用當前緩沖區的 evil(這些函數啟用或禁用evil-local-mode ,即 per-buffer 模式),然而,全局次要模式模式掛鈎運行啟用自己(請參閱自動禁用特定主要模式的全局次要模式),因此最好查看全局模式是否具有在特定情況下禁用自身的一些內置支持。

在邪惡模式的情況下,看起來各種“狀態”選項有助於實現這一點,“Emacs 狀態”( "emacs" )禁用所有 Evil 鍵綁定,以及(evil-set-initial-state MODE STATE)讓您為指定的主要模式配置默認狀態。

因此,除非不兼容性比鍵綁定更深,我想在加載 Evil 庫后,以下內容可以解決問題:

(evil-set-initial-state 'term-mode "emacs")

我很驚訝地重現了這個潛在的錯誤。

一種解決方案是在術語緩沖區中使用Cz 它只會打破邪惡模式。

我無法在我的設置(Emacs 24.3,來自 MELPA 的最新 Evil)中重現這個。 嘗試這個:

(add-hook 'term-mode-hook 'evil-emacs-state)

或者

(add-hook 'term-mode-hook 'evil-insert-state)

這對我有用。 (我通常使用插入狀態,因為我可以快速跳轉到正常狀態)。

對於 vterm,這對我有用:

(add-hook 'vterm-mode-hook 'evil-emacs-state)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM