我最近将箭头键更改为映射到 no-op 以强制自己正确使用 vim 导航。在 vim 中使用单词完成时,会弹出一个可能完成的单词列表。我曾经使用箭头键来导航它,但现在必须使用与完成启动相同的映射来迭代。
当此菜单弹出时,vim 是保持插入模式,更改为不同的模式还是进入修改的插入模式(类似于 paste-toggle 所做的),我可以更改j
和k
映射以在列表中移动?
如果没有,有没有办法在弹出窗口打开和关闭时调用方法?
我最近将箭头键更改为映射到 no-op 以强制自己正确使用 vim 导航。在 vim 中使用单词完成时,会弹出一个可能完成的单词列表。我曾经使用箭头键来导航它,但现在必须使用与完成启动相同的映射来迭代。
当此菜单弹出时,vim 是保持插入模式,更改为不同的模式还是进入修改的插入模式(类似于 paste-toggle 所做的),我可以更改j
和k
映射以在列表中移动?
如果没有,有没有办法在弹出窗口打开和关闭时调用方法?
插入模式补全候选的弹出菜单属于插入模式,没有特殊的子模式。为了区分,您必须使用:inoremap <expr>
带有条件的地图表达式 on pumvisible()
。例如重新映射j
以选择下一个完成候选:
:inoremap <expr> j pumvisible() ? '<C-n>' : 'j'
请注意,这样,您将无法键入j
包含向下钻取并从列表中选择的候选名称(这对于 尤其有用:set completeopt+=longest
)。
<c-p>
通过和导航完成<c-n>
。有关:h ins-completion
更多信息,请参阅。