gniuk
1
这似乎是一个老问题,但google并没找到解决办法. 论坛里也没见人提到.
复现:
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 也有同样的问题. 蛮影响体验的
gniuk
8
A workaround:
将虚拟终端的背景色设置成emacs的主题底色,他闪任他闪。
Emacs依旧天下第一,什么 vim vscode,哪能和我 bling bling 的 Emacs 比
也能用 tramp,sshfs 或 X forwarding
可以尝试调低 baud-rate,看看会否减少闪烁
rhcher
13
笑死,我之前就是这么调的,然后打开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’ 会导致闪烁吗?