我有时会使用 bash 和向上箭头键,以便能够快速获取我以前使用的命令。令人恼火的是,有时当我这样做时,我得到的是一个[A
而不是以前的命令。在网上做了一些研究后,看起来这是一个代表向上箭头键发送到计算机的关键代码。
我似乎无法在网上找到任何答案。我怎样才能阻止这种情况在未来发生?
该序列实际上是Escape[A,它是Ecma在 1976 年采用的作为标准ECMA-48的集合的一部分,被 ANSI 作为一个单独但几乎相同的标准支持多年(后来撤回),并且还被ISO/ IEC 6429在路上。这种多重标准化的结果是,虽然它们经常被称为 ANSI 转义码,但它们应该被正确地称为 ECMA-48 控制函数*。
[A
在屏幕上看到而不是动作的通常原因是初始的转义码已被意外吸收。除非我先按Ctrl V,否则我无法在键盘上重现此内容,这会告诉终端线路驱动程序将下一个字符作为文字处理。
所以,我们可以得到这个序列Ctrl VEscape[A,产生可见的输出[A
。
您会注意到,如果您Escape[A快速连续按下字符序列,光标确实会向上移动。但是,如果您在第一个字符之后暂停,您将无法获得光标移动,这是因为 Escape 字符具有与之关联的超时。在连接到 UNIX 系统的慢速串行线路上,这曾经是一个真正的问题,最接近的等价物是缓慢或间歇性的网络连接,在此序列传输过程中会有短暂的延迟。
现在回答你的问题,如何防止这种情况发生。没有多少,如果你是一个间歇性的网络连接上你可以做的,也许除了使用备用序列中的一个,如Escapek... k...k这是命令“vi模式”编辑期间可用(set -o vi
)。
* 就像 JavaScript 应该被称为 ECMAScript,我想
归档时间: |
|
查看次数: |
254 次 |
最近记录: |