ZSaberLv0 / ZFVimIM

vim输入法 / Vim Input Method by pure vim script, support: user word, dynamic word priority, cloud db files
204 stars 14 forks source link

[BUG] 在从插入模式退出到普通模式时出现意外输入的情况 #51

Closed jnpngshiii closed 1 year ago

jnpngshiii commented 1 year ago

在使用拼音输入法时,在从插入模式退出到普通模式时,如果按键按的太快,就会出现按键被输入法识别为输入的情况:

演示如下:

我在输入“你好”以后使用esc回到普通模式,随后快速按下dd按键。可以看到的是,我按下的dd没有删除这一行,被识别成了输入。

CleanShot 2023-03-29 at 10 56 41

然而如果在按下esc后,间隔一小会再按下dd键,则不会出现这个问题:

CleanShot 2023-03-29 at 11 01 00

是输入法反应慢了嘛?

ZSaberLv0 commented 1 year ago

原理上来说不太可能是本插件问题, 看看能否用最简配置排查一下, 另外, 如果有装 ZFVimIM_openapi, 可以先去掉试试, 排除各种异步引起的问题

较大可能性是某些补全插件, 或者 <esc>dd 相关的 keymap 引起的

jnpngshiii commented 1 year ago

好的,我抽空来测试一下是不是别的插件有影响~

jnpngshiii commented 1 year ago

使用原生vim(无任何个性化配置),仅加载ZFVimIM插件时,会出现相同的问题。 请问有什么代表插件状态的变量吗,我想用autocmd来试试看能不能暂时解决这个问题,类似这种:

autocmd InsertLeave * if exists('b:zfvimim_enabled') && b:zfvimim_enabled | call feedkeys(';;') | endif
ZSaberLv0 commented 1 year ago

插件状态:


我这无法复现, 可以试试:

  1. let g:ZFVimIME_enableOnInsertOnly=0: 该配置默认为 1, 退回 normal 时会自动禁用, 减少对其他插件的影响, 和你写的 autocmd InsertLeave 实际上干的是同一件事, 不太确定是否是这个引起的什么负面影响
  2. 看看有无什么奇怪的 keymap, 可以贴上来一起看看

    redir > log.txt
    map
    redir END
  3. 换个终端或环境试试, 类似 这种 奇奇怪怪的问题, 单靠 vim 插件或配置似乎没办法完全覆盖所有情况
jnpngshiii commented 1 year ago

谢谢回复,我这边再继续排查一下!

jnpngshiii commented 1 year ago

我这边排查了各种设置和可能有冲突的插件,都没有发现什么问题。最后我发现,使用GVim不会出现这个情况。

由于暂时缺少值得进一步追查的信息,我先把这个issue关了。等有进一步发现我再来反馈。