问题描述:
当终端窗口大小发生变化时,终端管理器向前台 shell 发送 SIGWINCH 信号。部分 shell 在接收到该信号后,会检测其行缓冲的宽度是否与新的终端列数不一致。如果宽度发生变化,shell 会触发重新渲染(redraw)当前输入行以适应新的行宽。这可能导致输入行被重新折行或视觉上产生换行效果,看起来像用户按下了回车。
解决方案:
在将新的窗口尺寸发送给 shell 之前,先在终端管理器内部对所有 pane 的内容进行 行重排(internal reflow),根据新的终端宽度调整逻辑行的折行和显示位置。这样,当 shell 收到 SIGWINCH 时,其逻辑缓冲中的行宽已经与终端显示宽度一致,shell 将不会执行额外的重新渲染,从而避免不必要的换行或视觉上的回车效果。
问题描述:
当终端窗口大小发生变化时,终端管理器向前台 shell 发送 SIGWINCH 信号。部分 shell 在接收到该信号后,会检测其行缓冲的宽度是否与新的终端列数不一致。如果宽度发生变化,shell 会触发重新渲染(redraw)当前输入行以适应新的行宽。这可能导致输入行被重新折行或视觉上产生换行效果,看起来像用户按下了回车。
解决方案:
在将新的窗口尺寸发送给 shell 之前,先在终端管理器内部对所有 pane 的内容进行 行重排(internal reflow),根据新的终端宽度调整逻辑行的折行和显示位置。这样,当 shell 收到 SIGWINCH 时,其逻辑缓冲中的行宽已经与终端显示宽度一致,shell 将不会执行额外的重新渲染,从而避免不必要的换行或视觉上的回车效果。