11

我最近将箭头键更改为映射到 no-op 以强制自己正确使用 vim 导航。在 vim 中使用单词完成时,会弹出一个可能完成的单词列表。我曾经使用箭头键来导航它,但现在必须使用与完成启动相同的映射来迭代。

当此菜单弹出时,vim 是保持插入模式,更改为不同的模式还是进入修改的插入模式(类似于 paste-toggle 所做的),我可以更改jk映射以在列表中移动?

如果没有,有没有办法在弹出窗口打开和关闭时调用方法?

4

2 回答 2

4

插入模式补全候选的弹出菜单属于插入模式,没有特殊的子模式。为了区分,您必须使用:inoremap <expr>带有条件的地图表达式 on pumvisible()。例如重新映射j以选择下一个完成候选:

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

请注意,这样,您将无法键入j包含向下钻取并从列表中选择的候选名称(这对于 尤其有用:set completeopt+=longest)。

于 2013-07-22T06:46:55.717 回答
2

<c-p>通过和导航完成<c-n>。有关:h ins-completion更多信息,请参阅。

于 2013-07-22T03:45:20.207 回答