vim 单词完成导航与 'j' 和 'k'

标签 vim tab-completion

在 vim 中,我在插入模式下使用 Ctrl-n 完成单词。如果有多个可能的匹配项,我会得到一个下拉列表,我可以使用箭头键从中选择一个可能的匹配项。

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

最佳答案

:h popupmenu-keys .

弹出菜单子(monad)模式没有特殊的映射集,但您可以进行有条件的插入模式映射:

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

关于vim 单词完成导航与 'j' 和 'k',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4016649/

相关文章:

vim - 如何使用vim将当前时间插入到文件中

vim - 在 HTML 文件中使用 tern_for_vim 插件

zsh - 为 zsh 编程自定义选项卡完成

python - Python 的 Cmd.cmd 中的文件名制表符补全

Scala REPL tab-complete 在骗我?

vim - 有没有办法配置 vimdiff 以忽略所有空格?

css - vim 中凌乱的 css 缩进

vim - 替换以特定模式开头的行的行尾

clojure - Clojure REPL 中是否可以有 _good_ tab 补全?

fish - 如何在 Fish 中使用键盘快捷键扩展环境变量?