用自己的代码覆盖 space,并可能覆盖 space

Override space with own code, and potentially the space

我需要将<Space>重新映射到运行MyFunction()(普通模式下),然后根据MyFunction()的处理结果,应该可以使其正常工作 space,即向右移动光标。如何实现?

示例:光标位于“[ ]”,按 space 会将其更改为“[x]”,光标不会移动。

示例:光标位于 "a word",按 space 向右移动光标(正常模式)。

nnoremap <expr> ...

就是您要找的。

例如如果你的 MyFunc() return 是一个布尔值,你可以做 :nnoremap <expr> <space> MyFunc()?"\<space>":"\<CR>" 所以这映射 space 到正常 space 或 Enter 取决于 MyFunc() 的结果

你也可以让你的MyFun()return一个字符串,然后你就可以直接在按键映射中使用了。

阅读 :h :map-expr 了解详情。