【问题标题】:Make nvim popup menu appear with only one character使 nvim 弹出菜单仅显示一个字符
【发布时间】:2019-05-28 16:33:30
【问题描述】:

我目前正在使用 NCM2 作为我的自动完成插件,但我不确定问题是一般的弹出菜单还是 NCM2。

当我尝试自动完成文件名时,只有在我输入至少 3 个字符后才会出现弹出菜单。即使额外的第三个字符不会限制建议。

例如,我有以下目录:

- 4822283_ERCOFTAC_m3c1_SST.dat 
- 4822299_ERCOFTAC_m3c1_SBES.log
- 4822299_FluentSBES.jou
- ERCOFTAC_m3c1_SBES.cas
- ERCOFTAC_m3c1_SBES.o4822299
- fluentSBES.sh

如果我输入48,什么都不会出现:

如果我输入482,那么我会得到自动完成菜单:

这是非常一致的行为。在处理以数字开头的文件名时,我至少注意到这一点。

所以问题是我能不能

A) 更改显示自动完成菜单所需的字符数或

B) 找到打开自动完成菜单的任何快捷方式(类似于 VS Code 中的“Trigger Suggest”命令)

你可以看到我的init.vimhere的副本。

编辑:

Yedhin 的回答解决了方法 A),但是它也会导致自动弹出菜单始终打开,老实说这很烦人。

为了解决最理想的 B) 项,我找到了 ncm2_manual_trigger 函数。所以理论上,通过在init.vim中输入以下内容,您可以随时手动触发自动弹出。

let g:ncm2#auto_popup = 0
imap <C-a> <Plug>(ncm2_manual_trigger)

但是,如this issue posted on the ncm2 repo 中所述,manual_trigger 仍然依赖于ncm2#complete_length 参数来确定要显示的内容。如果自动触发器尚未触发弹出菜单,这将导致手动触发器不显示弹出菜单。我们现在只需要等待问题得到解决(在撰写本文时,应该很快就能判断出问题上的“my-next-task”标签)。

【问题讨论】:

    标签: vim autocomplete popup neovim


    【解决方案1】:

    尝试在你的 init.vim 中明确设置:

    let g:ncm2#complete_length=[[1,1],[7,2]]  
    

    所以这个值意味着优先级在 1 到 6 之间的源的值为 1,优先级 >=7 的源的值为 2。

    【讨论】:

    • 既然您显然知道ncm2 的方式(或者至少知道如何比我更好地使用谷歌搜索),知道如何执行方法 B 吗?我尝试了为omnicomplete (&lt;C-X&gt; &lt;C-O&gt;) 执行此操作的方法,但出现了错误E764: Option 'omnifunc' not set
    • 我相信 omnifunc 的工作方式取决于文件类型。所以你必须明确设置ominfunc,like described in the documentation。我不能肯定地保证这一点,因为您上面提到的手动触发器是 ncm2 的 WIP。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多