Closed hao-lee closed 4 years ago
用了什么补全框架么?
因为是用omnifunc实现的输入法,没法和补全框架混一起用
我只用了gtags (和ctags类似) 来实现C语言的自动跳转,看这个补全列表如此详尽,我觉得是 gtags 给提供的信息,但是这个现象是无意间触发的,我在拼音下故意试了下Ctrl-x + Ctrl-O
并没有出现问题。我怀疑是不是触发了什么条件把omnifunc覆盖成ccomplete了。我手动改了这个变量感觉现象比较接近,我遇到这问题频率还是挺高的,再出现时我看看这个值到底是多少。
出现问题的时候试试 :verbose set omnifunc?
看是不是被什么改了
我找到复现办法了,
vim
命令打开空文件tabe
新建一个 tab page
tab page
上进入 insert
模式,然后用 ;;
进入输入法模式,然后 esc
直接回到 normal
模式gt
切到另一个 tab page
,按 i
,进入的是 insert
模式,而不是 INSERT (pinyin)
,我们手动用 ;;
进入输入法,此时再输入任意字符就会发现不打字,而是提示 E764: Option 'omnifunc' is not set
omnifunc
是空如果我们第一步打开的是个 .c
文件,那么第5步查看 omnifunc
就是 ccomplete#Complete
如果在出现问题后,手动将 omnifunc
设置为 ZFVimIME_omnifunc
,就可以继续用了,只不过状态栏下面仍旧会提示 Omni completion (^O^N^P) match 1 of 10
。
似乎是 iminsert
状态不同步, 先简单处理了下, 后面考虑 i_CTRL_^
都替换为直接改 iminsert
算了, 同步状态有点蛋疼
厉害,解决了,太效率了!非常感谢!
24b8ffa 改了一些实现方式, 顺便帮忙测测呗 :p
迫不及待的更新,我现在每天都在用 😏
如图所示,我也不知道是怎么触发的,这样之后每输入一个字母其实都是在进行补全操作,我的输入不会传递到输入法中。此时如果关闭输入法,再输入就不会有问题。再打开输入法还是有问题。