在日常使用 Emacs 的过程中,很多人对默认的光标样式不太满意。比如,在终端里打开 Emacs 时,光标可能是一个闪烁的下划线,看起来不够明显,长时间编辑容易看花眼。这时候,调整光标样式就成了提升体验的一个小技巧。
通过变量控制光标形状
Emacs 提供了 cursor-type 变量来控制光标的显示形式。可以在配置文件 ~/.emacs 或 ~/.emacs.d/init.el 中加入设置。支持的常见类型有 box(方块)、bar(竖线)和 hbar(横线)。
例如,想把光标改成一个实心的小方块,可以添加下面这行:
(setq cursor-type 'box)
如果更喜欢一条细竖线,像 VS Code 那样,可以写成:
(setq cursor-type 'bar)
还可以控制竖线的宽度,默认是 1 像素,加宽一点会更醒目:
(setq-default cursor-in-non-selected-windows nil)
(setq cursor-type '(bar . 2))
在不同模式下切换光标
有些用户希望在普通编辑时用方块,进入命令模式(如使用 evil-mode)时光标变成竖线或变细。这种情况可以通过 hook 实现动态切换。
比如在 evil-mode 中,插入模式下用横线,正常模式用方块:
(add-hook 'evil-insert-state-entry-hook (lambda () (setq cursor-type 'hbar)))
(add-hook 'evil-insert-state-exit-hook (lambda () (setq cursor-type 'box)))
终端环境下的兼容性
如果你是在终端里运行 Emacs(如 iTerm2、GNOME Terminal),部分光标样式可能无法生效,这取决于终端本身的支持程度。建议搭配 term-setup-escape-sequence 使用,或者改用图形界面启动 Emacs(emacs --fg-daemon),以获得完整支持。
某些终端中,还需要额外设置才能让竖线光标正常显示。可以尝试加入:
(when (equal window-system 'pc)
(setq cursor-type 'bar))
即时测试配置效果
修改完配置后,不用每次都重启 Emacs。可以用 M-x eval-region 选中刚写的代码执行,立刻看到光标变化。这样边调边看,几分钟就能找到最顺眼的样式。
光标虽小,但每天盯着它敲代码,舒服的样式能减少视觉疲劳。与其忍受别扭的闪烁下划线,不如花两分钟改一下配置,让编辑器更贴合自己的习惯。