Skip to content

bug: 当 resize 终端后,shell会回车换行 #6

Description

@LatosProject

问题描述:
当终端窗口大小发生变化时,终端管理器向前台 shell 发送 SIGWINCH 信号。部分 shell 在接收到该信号后,会检测其行缓冲的宽度是否与新的终端列数不一致。如果宽度发生变化,shell 会触发重新渲染(redraw)当前输入行以适应新的行宽。这可能导致输入行被重新折行或视觉上产生换行效果,看起来像用户按下了回车。

解决方案:
在将新的窗口尺寸发送给 shell 之前,先在终端管理器内部对所有 pane 的内容进行 行重排(internal reflow),根据新的终端宽度调整逻辑行的折行和显示位置。这样,当 shell 收到 SIGWINCH 时,其逻辑缓冲中的行宽已经与终端显示宽度一致,shell 将不会执行额外的重新渲染,从而避免不必要的换行或视觉上的回车效果。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions