在vim中,我使用Ctrl-n在插入模式下完成字的填充。如果有多个可能的匹配项,我可以使用箭头键从中选择一个可能的匹配项。使用'j'和'k'导航的vim字完成
但是,我不想使用箭头键;我想用'j'和'k'键。但是当我输入'j'或'k'时,它会插入字母,而不是在下拉菜单中上下移动。有没有一种方法可以配置vim以我想要的方式执行此操作?
在vim中,我使用Ctrl-n在插入模式下完成字的填充。如果有多个可能的匹配项,我可以使用箭头键从中选择一个可能的匹配项。使用'j'和'k'导航的vim字完成
但是,我不想使用箭头键;我想用'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
,你可以使用分别<C-J>
和<C-K>
,取代它们。 (请参阅mwcz对此答案的评论。)
使用此方法时可能遇到的一个问题是,他/她可能希望在调用完成菜单后继续键入,并且他/她希望键入的字母是'j'或'k'。很高兴知道未来会出现什么样的后果。 – tinifni 2010-10-25 16:45:58
@tinifni可以使用'
由于您已经按下了Ctrl,我发现使用'C-j'和'C-k'来浏览列表很方便。它不会干扰打开列表时继续打字: 'inoremap
我不知道如何用j和k做到这一点。你处于插入模式,他们不工作。
但是,我有另一种方式适合你,按Ctrl +ñ工作一样的标签,你可以使用移 - 标签下井名单和标签上去。这比使用箭头键更容易。但不如j和k好。
或者你也可以只使用按Ctrl +ñ和按Ctrl +P
并且'CTRL-Y'接受,'CTRL-E'丢弃。 – Benoit 2010-10-25 16:31:33
SuperTab(http://www.vim.org/scripts/script.php?script_id=1643)可能会对您有所帮助。安装完成后,您可以使用Tab和Tab-Shift来浏览弹出式菜单。
看到这个文档也:http://vim.wikia.com/wiki/Omni_completion_popup_menu
简言之到这样一个问题:几年后,我的VIM的工作流程是这样的,我不会做这种定制了。我宁愿让vim成为我可以在任何地方使用的编辑器,包括随机的Linux服务器和其他人的机器。为此,我只使用默认的键绑定。对于更多自定义的东西,我使用emacs。 – kerkeslager 2016-06-16 20:23:34