我从emacs迁移到vim的原因之一是避免使用Ctrl + N和Ctrl + P这样的笨拙键绑定来上下。我更喜欢像hjkl这样更符合人体工程学的键。但是,我没有找到在不使用箭头键或Ctrl + N / P的情况下在Omnicomplete框中导航的方法。
vim是否提供其他上下键?
答案 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'