在vim表达式中,如何返回到正常模式?



我正在使用CoC插件,它工作得很好。

这个命令重新映射了回车键,所以我们可以使用回车键来确认选择建议弹出窗口。

这个映射工作得很好,除了它在接受选择后保持插入模式:

inoremap <expr> <cr> pumvisible() ? "<C-y>" : "<C-g>u<CR>"`

从https://github.com/neoclide/coc.nvim/wiki/Completion-with-sources use-cr-to-confirm-completion

我如何修改这个返回到正常模式后,我按回车键?

任何想法?谢谢!

首先,让我们解构从该页获得的映射:

inoremap <expr> <cr> pumvisible() ? "<C-y>" : "<C-g>u<CR>"
  • inoremap使其成为非递归插入模式映射。i表示"插入模式";nore表示"非递归"。我知道最后的remap很容易让人把这些东西称为"重新映射"。或";remappings"但事实并非如此。它们只是"映射"。

  • <expr>使其成为表达式映射。这意味着右边是一个表达式,将在运行时求值以产生实际的RHS。

  • pumvisible() ? "<C-y>" : "<C-g>u<CR>"是Vim所称的"三元运算符"。(又名三元运算符)::help trinary。简单来说,它是这样的:"如果弹出菜单可见,返回<C-y>;如果不可见,返回<C-g>u<CR>"

    :help complete_ctrl-y接受弹出菜单中的当前建议。

    :help ctrl-g_u阻止Vim在<CR>之前插入撤销点。这不是严格必要的,但却是好的做法。

当你接受一个建议时,你想要调整映射的行为,所以必须改变的是"<C-y>"部分。

现在…

  • 你已经知道按什么键离开插入模式,
  • 你可以看看:help key-notation,如果你不确定如何表示该键,
  • 你知道你需要改变映射的哪一部分,
  • 您应该通过查看"三位一体"的最后两个部分来了解如何进行。操作符。

最新更新