You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在nlinum 1.9中仅高亮活动窗口的当前行号?

解决nlinum多窗口下仅高亮活动窗口当前行号的问题

我太懂这个烦恼了——开启nlinum-highlight-current-line后,多窗口环境下所有窗口的对应行号都会被高亮,而不是只聚焦在当前活动窗口的当前行。这里有个靠谱的解决方案,通过自定义nlinum的高亮逻辑来实现你的需求:

1. 重写行号高亮的判断逻辑

我们可以覆盖nlinum默认的内部高亮函数,让它只在当前活动窗口中高亮当前行的行号。把这段代码加到你的Emacs配置文件里:

(defun nlinum--hl-line (linum)
  (when (and nlinum-highlight-current-line
             (eq (window-buffer) (current-buffer)) ; 仅对活动窗口的缓冲区生效
             (= linum (line-number-at-pos)))
    (face-remap-add-relative 'nlinum-current-line 'nlinum-highlight)))

2. 窗口切换时自动更新高亮状态

为了确保切换窗口时,行号高亮能同步更新到当前活动窗口,我们给窗口配置变化和缓冲区列表更新的钩子添加nlinum刷新动作:

(add-hook 'window-configuration-change-hook #'nlinum-update)
(add-hook 'buffer-list-update-hook #'nlinum-update)

原理说明

  • 修改后的nlinum--hl-line函数新增了(eq (window-buffer) (current-buffer))判断,确保只有当前活动窗口对应的缓冲区才会触发行号高亮,避免非活动窗口跟着“凑热闹”。
  • 两个钩子函数会在窗口布局变化、切换窗口或缓冲区更新时,强制nlinum重新渲染行号,保证高亮状态始终和当前活动窗口保持一致。

验证效果

保存配置后重启Emacs,或者直接在*scratch*缓冲区执行这些代码,然后打开多个窗口测试——现在应该只有活动窗口的当前行号会被高亮了,完美解决你的问题!

内容的提问来源于stack exchange,提问作者BiagioF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:48:13