我最近将箭头键映射为无操作,以便迫使自己正确使用vim导航。在vim中使用单词完成时,会出现可能完成的单词列表。我曾经使用箭头键来导航这个列表,但现在必须使用与完成启动相同的映射来遍历。
当这个菜单弹出时,vim会保持插入模式,进入不同的模式还是进入修改过的插入模式(类似于paste-toggle所做的), 以便我可以改变j和k映射来移动列表吗?
如果不行,那有没有办法在弹出菜单打开和关闭时调用一个方法?
我最近将箭头键映射为无操作,以便迫使自己正确使用vim导航。在vim中使用单词完成时,会出现可能完成的单词列表。我曾经使用箭头键来导航这个列表,但现在必须使用与完成启动相同的映射来遍历。
当这个菜单弹出时,vim会保持插入模式,进入不同的模式还是进入修改过的插入模式(类似于paste-toggle所做的), 以便我可以改变j和k映射来移动列表吗?
如果不行,那有没有办法在弹出菜单打开和关闭时调用一个方法?
插入模式完成候选项的弹出菜单属于插入模式,没有特殊的子模式。要区分它,您需要使用映射表达式:inoremap <expr>
并在pumvisible()
上设置条件。例如,将j
重新映射为选择下一个完成候选项:
:inoremap <expr> j pumvisible() ? '<C-n>' : 'j'
j
的字母来从列表中选择(这在使用:set completeopt+=longest
时特别有用)。通过使用<c-p>
和<c-n>
浏览自动补全。更多信息请查看:h ins-completion
。