用于在Omnicomplete框中上下导航的Vim样式键

时间:2014-02-20 06:33:22

标签: vim

我从emacs迁移到vim的原因之一是避免使用Ctrl + N和Ctrl + P这样的笨拙键绑定来上下。我更喜欢像hjkl这样更符合人体工程学的键。但是,我没有找到在不使用箭头键或Ctrl + N / P的情况下在Omnicomplete框中导航的方法。

vim是否提供其他上下键?

enter image description here

2 个答案:

答案 0 :(得分:9)

我有以下映射,我很满意:

" Move up and down in autocomplete with <c-j> and <c-k>
inoremap <expr> <c-j> ("\<C-n>")
inoremap <expr> <c-k> ("\<C-p>")

如果您使用的插件(例如Neocomplete,其较早的同级Neocomplcache或YouCompleteMe)会立即弹出自动完成对话框,这将非常有用。

答案 1 :(得分:8)

在插入模式完成弹出窗口中,任何可打印字符都用于进一步限制匹配列表,因此只有<C-N> / <C-P>键可以选择不同的菜单项。

如果您可以丢失一些完成键,则可以定义以下映射:

:inoremap <expr> j pumvisible() ? '<C-n>' : 'j'
:inoremap <expr> k pumvisible() ? '<C-p>' : 'k'