使用“jk”移动键在Vim自动完成框中滚动。

28
在vim中,您可以开始输入单词,按下ctrl-n,然后会弹出一个框,显示建议的自动完成。我不喜欢必须移动我的手到箭头键来滚动浏览这个列表。有没有什么方法可以使用jk键来向下/向上滚动呢?
3个回答

48

我知道这个问题要求使用J和K键,但您也可以用另一种方法避免使用箭头键。

在按下ctrl+n以获取自动完成弹出窗口之后,您可以使用ctrl+n和ctrl+p来浏览列表。


这仍然是最好的选择,但有时会在插件绑定键映射时出现问题。例如,数据库工具插件使用ctrl + n。删除它们,它就能正常工作了。要找到它们,请转到“设置>键映射>键盘图标(通过快捷方式查找操作)”,然后输入ctrl + n或ctrl + p。 - evendiagram

36
inoremap <expr> j ((pumvisible())?("\<C-n>"):("j"))
inoremap <expr> k ((pumvisible())?("\<C-p>"):("k"))

1
非常有趣的问题和解决方案:每次弹出窗口时,我都会不假思索地自动使用 j 和 k。 - Xavier T.
12
好的,我会尽力进行翻译。请注意,我无法进行实时输入,因此当文本包含“j”或“k”时,我无法即时翻译这部分文本。以下是需要翻译的内容:NB: you will loose the possibility to type on-the-fly part of the text (when it contains j or k.) - Luc Hermitte
2
可以将它设置为 alt+j/k 吗? - qmmr
你可以用<down> / <up>替换j / k - river
啊!这个映射太酷了,但它意味着你失去了使用 jk、kj 作为转义映射的功能,即使使用 jdhao 的 better-escape 插件也不行。 - Colin
显示剩余2条评论

2
inoremap <expr> <down> ((pumvisible())?("\<C-n>"):("\<down>"))
inoremap <expr> <up> ((pumvisible())?("\<C-p>"):("\<up>"))

对我不起作用。但是使用 j 和 k 代替 <down> 和 <up> 可以正常工作。 - Igor Mikushkin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接