当Vim出现自动完成菜单时,它进入哪种模式?

11

我最近将箭头键映射为无操作,以便迫使自己正确使用vim导航。在vim中使用单词完成时,会出现可能完成的单词列表。我曾经使用箭头键来导航这个列表,但现在必须使用与完成启动相同的映射来遍历。

当这个菜单弹出时,vim会保持插入模式,进入不同的模式还是进入修改过的插入模式(类似于paste-toggle所做的), 以便我可以改变j和k映射来移动列表吗?

如果不行,那有没有办法在弹出菜单打开和关闭时调用一个方法?


仍处于插入模式,但我不知道关于打开和关闭钩子的问题的答案。 - Andy Ray
使用 hjkl 并不比使用箭头更“合适”。你把精力放在了错误的目标上。有比逐个字符或逐行移动更好的方法,这才是你应该集中精力的地方。当然还有 :help。 - romainl
2个回答

4

插入模式完成候选项的弹出菜单属于插入模式,没有特殊的子模式。要区分它,您需要使用映射表达式:inoremap <expr>并在pumvisible()上设置条件。例如,将j重新映射为选择下一个完成候选项:

:inoremap <expr> j pumvisible() ? '<C-n>' : 'j'

请注意,使用此方法后,您将无法在候选人姓名中输入包含j的字母来从列表中选择(这在使用:set completeopt+=longest时特别有用)。

2

通过使用<c-p><c-n>浏览自动补全。更多信息请查看:h ins-completion


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接