进一步阅读

进一步阅读

我是该产品的热衷用户鱼壳我非常喜欢它。

不过有一个问题:

在页面上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就是这样的序列之一。在错误的上下文中它会打印,在正确的上下文中它是重置显示的一部分。

有关详细信息,请参阅termcapconsole_codes和手册页。tput

答案2

TERM您的终端模拟器与环境变量的值不匹配。最常见的错误是认为不是 XTerm 的内容将与名为xtermxterm-new的termcap/terminfo 记录匹配xterm-256color

您的 terminfo 记录指定了相对较新的E3功能(当前为linuxputtyputty-256colorxterm-basicxterm-newxtermxterm-256color和一些其他终端类型指定),该功能告诉程序有一个回滚缓冲区需要清除以及如何清除它。但您的终端模拟器实际上并不支持该控制序列,而是打印您所看到的响应内容。 Fish shell 正在运行该clear命令,该命令现在利用了 terminfo 增强。

环境变量值中给出的名称TERM必须与正确描述终端仿真器操作的 termcap/terminfo 记录的名称相匹配。

进一步阅读

相关内容