编辑右侧window时,导致左侧window显示问题

不知道该怎样描述这个问题,下面的gif应该能够说明问题:

动画 在我编辑右侧window的时候,移动向下就会“抹掉”左边窗口的内容(实际无影响,只有显示效果)

此问题也不仅限于org-edit-special,在日常编辑的时候,只要用到右边的window,就有可能会影响的左边的window。

这个现象困扰我几个月了,只会偶发复现,当我想要刻意复现的时候却无法复现了。

另外似乎只在TUI下会产生,GUI由于用得少,不清楚和GUI还是TUI是否有关,这点存疑。

我用的是WSL下的emacsclient,终端为Windows Terminal,麻烦大家看看这是怎么造成的。

这是什么终端模拟器?

windows terminal

使用的是 w32 port 还是 WSL?

wsl

哥们你问的问题我上面不是全都写清楚了吗……

可能是 Windows Terminal 的 bug。这些年端模拟器的质量普遍低下,不建议在终端下使用 Emacs,类似 windows terminal 冒充 xterm 的终端模拟器非常容易出现显示问题。

如果真需要在 WSL 下运行终端模拟器,建议安装 X 服务器,使用正版 xterm。

New rendering engine

We’ve added a new profile setting, experimental.useAtlasEngine , that when set to true will enable a new text rendering engine. While the performance improvements aren’t generally noticeable, they can be seen in certain edge cases, most notably when presenting text with a large number of colors. In these cases, this new renderer will draw at the display refresh rate regardless of screen resolution. Please note that the engine is still a work in progress, it may be unstable, and some of your favorite features may still be missing. We look forward to improving this renderer over time and will hopefully replace the existing one by default once it meets feature parity.

Windows Terminal 预览版v13增加了新的渲染策略,可能会解决你的问题。

感谢,有个问题想请教下,由于我经常要用terminal打开explorer中的对应路径,我常用的操作就是在导航栏里输入wt就能在这个目录下打开,那windows terminal preview对应的executable name是什么呢?我找了下安装路径,只找到一个也叫wt.exe的符号链接。

Update: 找到了一个相对稳定的触发方式

  1. 在TUI下打开Emacs
  2. 然后打开一个文件
  3. evil-window-vsplit纵向分屏
  4. C-x o切换到右侧window
  5. 打开另一个org-file
  6. 在这个org-file的任意source block中C-c '执行org-edit-special

即可复现,同样的步骤在GUI中测试过没有问题。

简单来说就是在右侧的window中执行org-edit-special,原先右侧window的buffer会被放到左侧window中显示,然后右侧window中的光标移动就会影响到左侧的显示。

感觉可能确实是Windows Terminal的问题,分别尝试过开启下图中的选项,均无效 image

windows terminal preview的方案我还没尝试,等空了再测试一下。

按下Win键,搜索“alias”

TERM=vt102 下运行 Emacs 还会出现问题吗?

现在的$TERMxterm-256color

我之前使用Windows Terminal+Emacs时也出现过刷新问题,不得不自己多次按C-l强制刷新。改用MobaXTerm的时候就没类似问题。

现在看来新款渲染策略还是有一定效果的。

如果采用WindowsTerminal可以将TERM设置为vscode-direct,启用真彩色

Windows Terminal 在没有全面兼容 xterm 的情况下不该冒充 xterm。

export TERM=vscode-direct之后,一方面很怪的是,这改变了我终端的颜色

这是启用前

image

这是启用后

image

另外就是这个设置对于我开头说的问题并没有效果,但是您回复里提到的C-l还真能解决我的问题,借机问一下这个快捷键是zsh/bash的快捷键吗?

不清楚是不是我配置的问题,尝试了mobaxterm和windows terminal preview开启新渲染引擎,均无效。

我再emacs -Q判断一下

Update: emacs -Q不会发生该问题,从一开始就该先测试一下的,我再研究一下具体是哪部分引起的问题,耽误诸位的时间了十分抱歉。

C-l是emacs自带的快捷键,指向redraw-display

C-l的原生快捷键绑定应该是recenter-top-bottom

对,recenter-top-bottom' 在 TTY frame 下默认会运行 \redraw-display’。

二分法检查了一遍我的配置,找到了罪魁祸首:

git-gutter

不清楚具体的原因,但是在移除了相关配置之后,相应的问题不再复现了。感谢讨论的各位,如果有兴趣的话可以尝试一下在TUI下启用git-gutter,然后按照我上面的步骤尝试复现相应问题。我自己能力有限,既然解决不了这个问题,暂时就先把这个包去除掉了。