在 vim 中,我在插入模式下使用 Ctrl-n 完成单词。如果有多个可能的匹配项,我会得到一个下拉列表,我可以使用箭头键从中选择一个可能的匹配项。
但是,我不想使用箭头键;我想使用“j”和“k”键。但是当我输入“j”或“k”时,它会插入字母,而不是在下拉菜单中向上或向下。有没有办法可以配置 vim 以按照我想要的方式执行此操作?
在 vim 中,我在插入模式下使用 Ctrl-n 完成单词。如果有多个可能的匹配项,我会得到一个下拉列表,我可以使用箭头键从中选择一个可能的匹配项。
但是,我不想使用箭头键;我想使用“j”和“k”键。但是当我输入“j”或“k”时,它会插入字母,而不是在下拉菜单中向上或向下。有没有办法可以配置 vim 以按照我想要的方式执行此操作?
见:h
popupmenu-keys
。
弹出菜单子模式没有特殊的映射集,但您可以进行有条件的插入模式映射:
inoremap <expr> j pumvisible() ? "\<C-N>" : "j"
inoremap <expr> k pumvisible() ? "\<C-P>" : "k"
这使得j
/像/k
一样导航弹出菜单,而它是可见的。<C-N>
<C-P>
j
附录:如果您希望在键入and时能够保持控制,您可以分别用andk
替换它们。(请参阅 mwcz 对此答案的评论。)<C-J>
<C-K>
我不知道如何使用jand来做到这一点k。您处于插入模式,它们不起作用。
但是,我为您提供了另一种方式,Ctrl+N与 Tab 的工作方式相同,您可以使用Shift-Tab向下移动列表,使用 Tab 向上移动。这比使用箭头键更容易。但没有那么j好k。
或者你可以只使用Ctrl+N和Ctrl+P
SuperTab (http://www.vim.org/scripts/script.php?script_id=1643) 可以帮助你。安装后,您可以使用 Tab 和 Tab-Shift 来导航弹出菜单。
另请参阅此文档:http: //vim.wikia.com/wiki/Omni_completion_popup_menu