终端Emacs滚动时的闪烁问题

这似乎是一个老问题,但google并没找到解决办法. 论坛里也没见人提到.

flash

复现:

emacs -q -nw
(setq scroll-conservatively 101)

按住C-n或C-p滚动buffer, display会时不时闪烁色块, 尤其是在边界上.

gnome-terminal 和 cygwin mintty 都是同样的现象. 设置env TERM: xterm-256color 和 xterm-24bit 也都是如此.

用终端的同学都没有这个问题吗?或者已经有解决的办法?

我也有这个问题,难受

我在用终端emacs时终端内容有时候还不会及时刷新,需要手动按C-l

终端下 emacs 不支持双缓冲导致闪烁,之前有人打了针对 kitty 的补丁,不过因为 termcap/terminfo 本身不带有双缓冲支持而不能接受。

建议大家放弃 tty 这种落后的技术,多用 GUI,享受双缓冲带来的无闪烁渲染。

3 个赞

我 WSL2 下用 Windows Terminal 也有同样的问题. 蛮影响体验的

远程开发,只能tty,难受

1 个赞

但tty不才正是永恒的存在吗?

tty应该是emacs/vim的强项才是呀。

ps. vim 不闪烁。

A workaround:

将虚拟终端的背景色设置成emacs的主题底色,他闪任他闪。

Emacs依旧天下第一,什么 vim vscode,哪能和我 bling bling 的 Emacs 比 :crazy_face:

也能用 tramp,sshfs 或 X forwarding

可以尝试调低 baud-rate,看看会否减少闪烁

这是什么,怎么调的?

(setq baud-rate 2400)

笑死,我之前就是这么调的,然后打开gui背景一片纯白( edit: 不对,我不是这么调的,我是把背景设置为了无(

我发现我开启了24bit色深,就完全没有这个问题了,非常流畅

我发现了一个神奇的规律,我用的是spacemacs。 如果我直接从命令行emacs -nw test.txt打开txt文件,上下移动的时候闪的厉害。 但是先启动emcas,然后打开一个cpp文件进入cc主模式,然后再用dired打开同一个txt,这时候就几乎不闪。

这是什么神仙操作。

可能是 spacemacs 开启了某种移动光标时改变 overlay 的包裹(怀疑是 hl-line-mode),导致全面的 redisplay 和闪烁。

hl-line-mode 这是高亮当前行吗? 貌似不是这个,因为我默认关掉了高亮当前行。

如果不是 hl-line-mode 就不清楚了,按下 `C-l’ 会导致闪烁吗?

‘C-I’,只有光标在闪,屏幕一点不闪~~