14

在 vim 中,我在插入模式下使用 Ctrl-n 完成单词。如果有多个可能的匹配项,我会得到一个下拉列表,我可以使用箭头键从中选择一个可能的匹配项。

但是,我不想使用箭头键;我想使用“j”和“k”键。但是当我输入“j”或“k”时,它会插入字母,而不是在下拉菜单中向上或向下。有没有办法可以配置 vim 以按照我想要的方式执行此操作?

4

3 回答 3

21

:hpopupmenu-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>

于 2010-10-25T16:39:50.040 回答
10

我不知道如何使用jand来做到这一点k。您处于插入模式,它们不起作用。

但是,我为您提供了另一种方式,Ctrl+N与 Tab 的工作方式相同,您可以使用Shift-Tab向下移动列表,使用 Tab 向上移动。这比使用箭头键更容易。但没有那么jk

或者你可以只使用Ctrl+NCtrl+P

于 2010-10-25T16:28:07.000 回答
0

SuperTab (http://www.vim.org/scripts/script.php?script_id=1643) 可以帮助你。安装后,您可以使用 Tab 和 Tab-Shift 来导航弹出菜单。

另请参阅此文档:http: //vim.wikia.com/wiki/Omni_completion_popup_menu

于 2012-03-14T22:34:44.410 回答