
我是該產品的熱衷用戶魚殼我非常喜歡它。
不過有一個問題:
在頁面上https://fishshell.com/docs/2.1/index.html有一段標題為“命令列編輯器”。它列出了許多有用的快捷方式。
我最感興趣的是ctrl-L。根據描述:「Ctrl-L 清除並重新繪製螢幕」。我嘗試了一下,效果如我所願。然而它會產生一些添加到前一個提示中的跡象。向後滾動時可以看到這一點。
例子:
rosika@... ~/Schreibtisch> [3;J
rosika@... ~/Schreibtisch>
這[3;J
就是我要問的。這[
確實是某種矩形,裡面有(我猜)4 位數字。
誰能告訴我為什麼會出現這種現象?這是關於什麼的?
預先非常感謝。
問候
羅西卡
我的系統:
Linux/Lubuntu 16.04.4 LTS,64 位元
魚 v.2.2.0-3
答案1
unix 終端透過解釋混合在單一流中的控制序列和文字來填充內容。許多字元既可以是文本,也可以是控制代碼,這取決於上下文它們的含義。
<esc>[3;J
就是這樣的序列之一。在錯誤的上下文中它會被列印,在正確的上下文中它是重置顯示的一部分。
有關詳細信息,請參閱termcap
、console_codes
和手冊頁。tput
答案2
TERM
您的終端模擬器與環境變數的值不符。最常見的錯誤是認為不是 XTerm 的內容將與名為xterm
或xterm-new
的termcap/terminfo 記錄相符xterm-256color
。
您的 terminfo 記錄指定了相對較新的E3
功能(目前為linux
、putty
、putty-256color
、xterm-basic
、xterm-new
、xterm
、xterm-256color
和一些其他終端類型指定),該功能告訴程式有一個回滾緩衝區需要清除以及如何清除它。但您的終端模擬器實際上並不支援該控制序列,而是列印您所看到的回應內容。 Fish shell 正在執行該clear
命令,該命令現在利用了 terminfo 增強。
環境變數值中給出的名稱TERM
必須與正確描述終端模擬器操作的 termcap/terminfo 記錄的名稱相符。