我是emacs的新手,我想知道当我们处于邪恶模式的VISUAL模式时,我们如何禁用高亮线模式(global-hl-line-mode)。当我们开始选择激活hl-line的块时,即使它们的背景颜色不同,我也觉得很困惑。 当然,我希望在离开VISUAL模式时再次激活hl-line-mode。感谢。
编辑:我试过这个,我终于能够在VISUAL模式下禁用hl-line。
(add-hook'dear-visual-state-entry-hook(lambda() (setq-local global-hl-line-mode 无)))
但是当我离开时我无法启用它。我试过这个,但它不起作用:
(add-hook'dear-visual-state-exit-hook(lambda() (global-hl-line-mode 1)))
编辑:没关系,这实际上有效: (add-hook'defick-visual-state-entry-hook(lambda() (setq-local global-hl-line-mode 无)))
(add-hook'dear-visual-state-exit-hook(lambda() (global-hl-line-mode nil)))
答案 0 :(得分:0)
最好在当前缓冲区中禁用hl-line-mode,而不是全局禁用它:
(add-hook 'evil-visual-state-entry-hook (lambda() (hl-line-mode -1)))
(add-hook 'evil-visual-state-exit-hook (lambda() (hl-line-mode +1)))
请注意,如果您不使用global-hl-line-mode
,则可能会出现问题。每次退出可视模式时都会启用hl-line-mode
,无论hl-line-mode是否首先处于打开状态。这就是我为了防止这种情况而共同攻击的原因:
(defvar-local was-hl-line-mode-on nil)
(defun hl-line-on-maybe () (if was-hl-line-mode-on (hl-line-mode +1)))
(defun hl-line-off-maybe () (if was-hl-line-mode-on (hl-line-mode -1)))
(add-hook 'hl-line-mode-hook
(lambda () (if hl-line-mode (setq was-hl-line-mode-on t)))))
(add-hook 'evil-visual-state-entry-hook 'hl-line-off-maybe)
(add-hook 'evil-visual-state-exit-hook 'hl-line-on-maybe)
这种方式hl-line-mode
不会被篡改,除非事先在缓冲区中明确激活,例如(add-hook 'python-mode-hook 'hl-line-mode)
。
编辑:修复了第二个代码段中的hl-line-mode挂钩。