有两种方法可以在弹出菜单中选择候选。
1 <C-n> or <C-p>
可以选择候选和自动填充关键字。
2 <Up> or <Down>
选择候选人需要按Enter键才能完成。
您还可以在popupmenu-keys中阅读有关上下的链接。(this)
我更喜欢<Up> or <Down>
的行为,但我不喜欢在vim中按箭头。
我决定重新映射<C-n> or <C-p>
,让<C-n> or <C-p>
做同样的行为。
这是我的配置。
imap <expr><C-n> pumvisible() ? "\<Down>" : " \<C-n>"
imap <expr><C-p> pumvisible() ? "\<Up>" : " \<C-p>"
我用答案更改了我的配置。
我遇到两种情况。
1.使用<c-n>
触发弹出菜单,效果很好。
2.要使用<c-x><c-p>
触发弹出菜单,但事实并非如此。 <C-n> or <C-p>
默认有效。
答案 0 :(得分:2)
你的整个问题很难理解(即使在所有这些编辑之后;你也没有很好地解释你的尝试),但以下两件事情肯定是奇怪的:
:imap <expr><C-n> pumvisible() ? "\<Down>" : " \<C-n>"
<C-n>
前面的空格字符,您将无法在现有基础上触发完成。它将始终插入一个空格,然后提供所有完成候选!:imap
(由于空格字符),这将成为递归映射,因此它将忙于等待。使用:inoremap
。这就是:
:inoremap <expr><C-n> pumvisible() ? "\<Down>" : "\<C-n>"
对我来说效果很好(但我不知道这是否是你真正想要的)。