使用'j'和'k'导航vim字完成

时间:2010-10-25 16:20:25

标签: vim tab-completion

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

但是,我不想使用箭头键;我想使用'j'和'k'键。但是当我输入'j'或'k'时,它会插入字母,而不是在下拉列表中上下移动。有没有办法我可以按照我想要的方式配置vim?

3 个答案:

答案 0 :(得分:16)

请参阅:h popupmenu-keys

弹出菜单子模式没有特殊的映射集,但您可以进行条件插入模式映射:

inoremap <expr> j pumvisible() ? "\<C-N>" : "j"
inoremap <expr> k pumvisible() ? "\<C-P>" : "k"

这使得j / k可以在<C-N> / <C-P>之类的弹出式菜单中导航,同时可见。

附录:如果您希望在键入jk时能够控制住,则可以分别将其替换为<C-J><C-K>。 (参见mwcz对此答案的评论。)

答案 1 :(得分:8)

我不知道如何用j和k做到这一点。你处于插入模式,它们不起作用。

但是,我有另一种方式, Ctrl + N 的工作方式与Tab相同,你可以使用 Shift - Tab 在列表中向下,Tab用于向上。它比使用箭头键更容易。但不如j和k那么好。

或者您可以使用 Ctrl + N Ctrl + P

答案 2 :(得分:0)

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

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