gpt4 book ai didi

linux - vim 如何区分 ESC 键和转义序列的头部?

转载 作者:太空狗 更新时间:2023-10-29 12:09:28 26 4
gpt4 key购买 nike

当我们按下 home 键时,vim 接收到三个 ascii 码:\e O H。

vim 如何确定用户按下了 home,而不是按下了 Esc O H

我想到的一种方法是:用一个大的 count 参数读取 stdin 以耗尽它,测试返回值。如果大于 1,我们认为它是由功能键生成的转义序列。

但是,有一个问题:
如果vim跑在远程服务器上,用户通过putty操作。用户想在上面插入一行,插入一个字符H,所以他按了Esc O H。三个击键被打包成三个网络包并传输到服务器。由于网络拥塞,这些包裹同时到达。
于是,这三个字符同时出现在vim的stdin缓冲区中,被误认为是home的转义序列。

不知道vim是怎么避免这个问题的,你们有没有更好的办法?

最佳答案

melpomene 已经指出了有关 timeout 的相关 vim 帮助主题。

So putty also transfers keystrokes time intervals, I guess?

不,putty 不会做这样的事情。 vim 只能考虑其接收键序列字符之间的时间间隔,这就是为什么如果连续快速键入多个字符可能会无意中将其解释为控制序列的原因,或由传输契约(Contract)。

关于linux - vim 如何区分 ESC 键和转义序列的头部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51299264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com