Terminal

清除到行尾在螢幕中使用錯誤的背景顏色

  • April 15, 2020

在 ZSH 提示擴展中,命令 %E 應該是“清除到行尾”。

這行得通。我們在一直穿過的灰色條中看到它。

在此處輸入圖像描述

但是,如果我呼叫“螢幕”,則 %E 停止工作: 在此處輸入圖像描述

知道這是什麼原因,以及如何解決?

當您發送 ECMA-48 擦除控制序列之一時,擦除是使用目前背景顏色還是預設背景顏色因終端類型而異。(在 terminfo 數據庫中,有一個功能允許程序確定他們正在與之交談的終端將做什麼。它被命名為bce。與 termcap 等效的名稱是ut。)您正在設置目前的背景顏色,然後擦除到行尾,期望擦除始終使用目前顏色。

screen本身就是一個終端仿真器。但與大多數硬體終端不同,它在這方面的行為是可切換的。預設情況下,背景顏色擦除是關閉的,並且控制序列會導致使用預設顏色進行擦除。bce使用命令打開它。一個使用命令bce在所有新螢幕中設置預設設置。defbce

(我說的最多,因為最新型號的 DEC VT 提供 DEC 私有模式 117 來切換行為。這些終端的預設設置是“新的”PC 兼容行為,即用目前顏色擦除,關閉私有模式 117 將恢復到使用預設顏色擦除的“舊”VT 兼容行為。DEC VT 52x 終端可以像 一樣切換screen,除了主機可以進行切換並且預設是“新”行為,與screen預設相反。這些終端實際上比screen, 更新了幾年。)

所以打開它。就這麼簡單。

進一步閱讀

引用自:https://unix.stackexchange.com/questions/251726