在可视模式下(邪恶模式)禁用高亮显示行

时间:2016-11-12 20:52:06

标签: emacs evil-mode

我是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)))

1 个答案:

答案 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挂钩。