2010-10-25 65 views
9

在vim中,我使用Ctrl-n在插入模式下完成字的填充。如果有多个可能的匹配项,我可以使用箭头键从中选择一个可能的匹配项。使用'j'和'k'导航的vim字完成

但是,我不想使用箭头键;我想用'j'和'k'键。但是当我输入'j'或'k'时,它会插入字母,而不是在下拉菜单中上下移动。有没有一种方法可以配置vim以我想要的方式执行此操作?

+0

简言之到这样一个问题:几年后,我的VIM的工作流程是这样的,我不会做这种定制了。我宁愿让vim成为我可以在任何地方使用的编辑器,包括随机的Linux服务器和其他人的机器。为此,我只使用默认的键绑定。对于更多自定义的东西,我使用emacs。 – kerkeslager 2016-06-16 20:23:34

回答

15

:hpopupmenu-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对此答案的评论。)

+4

使用此方法时可能遇到的一个问题是,他/她可能希望在调用完成菜单后继续键入,并且他/她希望键入的字母是'j'或'k'。很高兴知道未来会出现什么样的后果。 – tinifni 2010-10-25 16:45:58

+4

@tinifni可以使用' j'和' k'来做到这一点。 – ZyX 2010-10-25 17:20:20

+4

由于您已经按下了Ctrl,我发现使用'C-j'和'C-k'来浏览列表很方便。它不会干扰打开列表时继续打字: 'inoremap pumvisible()?“\ ”: “\ ”'和' inoremap pumvisible()? “\ ”:“\ ”' – mwcz 2012-06-13 15:19:56

7

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

但是,我有另一种方式适合你,按Ctrl +ñ工作一样的标签,你可以使用 - 标签下井名单和标签上去。这比使用箭头键更容易。但不如j和k好。

或者你也可以只使用按Ctrl +ñ按Ctrl +P

+5

并且'CTRL-Y'接受,'CTRL-E'丢弃。 – Benoit 2010-10-25 16:31:33