Answers:
Spacemacs使用切换的概念来启用/禁用每个缓冲区的次模式。切换开关分组在SPC t和下SPC T,但是它们仅切换到当前缓冲区。您可以通过按SPC t p(spacemacs/toggle-smartparens
)暂时禁用当前缓冲区的smartparens 。
但是,如果你想禁用smartparens每一个缓冲永久,把spacemacs/toggle-smartparens-globally-off
你的dotspacemacs/user-config
功能。为此,请按SPC f e d,这将打开您的.spacemacs
文件。然后确保您具有以下内容:
(defun dotspacemacs/user-config ()
"Configuration function for user code.
This function is called at the very end of Spacemacs initialization after
layers configuration. You are free to put any user code."
; other code
(spacemacs/toggle-smartparens-globally-off)
; other code
)
从https://github.com/syl20bnr/spacemacs/issues/1603#issuecomment-213553034:
smartparens-global-mode是全局模式。如果启用它,您将在每个缓冲区中获得smartparens-mode。将其关闭不会阻止您在任何地方打开smartparens模式。(这很愚蠢,因为如果确实如此,将无法有选择地启用smartparens。根据模式的不同,它可能无处不在或无处不在。)实际上,默认情况下,smartparens-global-mode已关闭。
Spacemacs通过在钩子中将其打开来启用所有编程缓冲区中的smartparens模式。因此,您必须从prog-mode-hook中删除该功能。
要从删除功能prog-mode-hook
,下面一行添加到dotspacemacs/user-config
在.spacemacs
:
(remove-hook 'prog-mode-hook #'smartparens-mode)
如果默认情况下未禁用smartparens-mode,则还可以添加以下行:
(spacemacs/toggle-smartparens-globally-off)
请注意,如果您smartparens
按照其他答案中的建议排除软件包,则会丢失其他功能,例如SPC j n
(sp-newline
)。
为邪恶插入模式添加进入/退出钩子:
;; Defeat smartparens-mode in evil mode
(add-hook 'evil-insert-state-entry-hook 'turn-off-smartparens-mode)
(add-hook 'evil-insert-state-exit-hook 'turn-on-smartparens-mode)
在spacemacs混合模式下,应用于邪恶混合状态钩子:
;; Alternative way to defeat smartparens-mode in hybrid mode
(add-hook 'evil-hybrid-state-entry-hook 'turn-off-smartparens-mode)
(add-hook 'evil-hybrid-state-exit-hook 'turn-on-smartparens-mode)
以下是仅在特定模式下有选择地启用 smartparens的方法
(defun dotspacemacs/user-config ()
(require 'smartparens)
(remove-hook 'prog-mode-hook #'smartparens-mode)
(remove-hook 'markdown-mode-hook #'smartparens-mode)
(spacemacs/toggle-smartparens-globally-off)
(add-hook 'clojure-mode-hook '(lambda () (smartparens-mode 1)) t))