我是该产品的热衷用户鱼壳我非常喜欢它。
不过有一个问题:
在页面上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 记录的名称相匹配。