在 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
和 k
时同时按住 control 键,你可以分别将它们替换为 <C-J>
和 <C-K>
。(参见 mwcz 在此答案的评论。)
<C-v>j
和 <C-v>k
来完成它。 - ZyXC-j
和C-k
很方便,并且在列表打开时不会干扰继续输入的操作: inoremap <expr> <C-j> pumvisible() ? "\<C-N>" : "\<C-j>"
和
inoremap <expr> <C-k> pumvisible() ? "\<C-P>" : "\<C-k>"
- mwczj
和k
。) - Pi Delport我不知道如何使用j和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