:execute 的非执行版本

A non-executing version of :execute

是否有类似 :execute 的命令或函数允许您将文本发送到 Vim cmdline 但实际上并不执行它?我想让光标留在命令行的末尾。我已经浏览了半小时的帮助文档,找不到任何东西。

这取决于触发方式。如果是通过映射,你可以简单地使用 :help :map-expr:

fun! MyText()
    return (localtime() % 2 ? ':echo ' : ':echomsg ')
endfun
:nnoremap <expr> <Leader>e MyText()

否则(即通过自定义命令或通过 :autocmd),您必须使用 feedkeys() 函数将键入的字符插入 Vim 的输入事件循环:

:command! MyText call feedkeys(MyText(), 'n')

不能只使用:normal,因为它假定完整命令,如果它不完整就会中止。