我正在编写一个模糊查找vim插件,它将图形程序作为一个单独的进程运行。它打开一个窗口,你输入它,按回车键,然后vim插件处理它的输出并导航到你选择的文件/缓冲区。
触发查找功能和新进程抓取键盘输入之间的时间只有几分之一秒,因此可能会很快意外输入,这会导致输入传递给vim。
鉴于vim是单线程的,我知道(并且已经验证)在程序完成之前实际上没有处理错误的键盘输入 - 在程序运行时缓冲输入,然后解释我键入的随机键作为vim行动。
如何放弃位于vim输入缓冲区但尚未处理的输入?
inputsave()
接受待处理的键盘输入并将其保存到堆栈中。这将是我想要的,除非它导致内存泄漏,如果我不能通过调用inputrestore()
来匹配它。是否可以在不执行的情况下丢弃存储的输入?
如果这不是直接可能的,那么有人能想出一个将这些事件排放到安全地方的好方法吗?即,在存储的输入没有可见效果的状态下调用inputrestore()
。
我需要在正常模式映射和命令模式映射中执行此操作。所以我更喜欢一种不会放弃当前命令模式输入的解决方案。