如何在vimscript中获取最后一条回显消息?

dim*_*-an 5 vim

有没有办法将最后回显的消息检索到变量中?
例如:如果我调用函数,那么:

echo 'foo'
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式将这个'foo'检索到变量中吗?
谢谢!

ZyX*_*ZyX 10

您无法检索上次回显的消息.但还有其他选择:

  1. 如果您可以:redir在此函数调用之前放置一个命令,而在此之后放置另一个命令,则可以捕获它回显的所有内容.但请注意,重定向不会嵌套,因此如果函数使用:redir自身,您可能什么也得不到:

    redir => s:messages
    echo "foo"
    redir END
    let s:lastmsg=get(split(s:messages, "\n"), -1, "")
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果函数使用:echomsg而不是:echo,则可以使用:messages命令和:redir:

    echom "foo"
    redir => s:messages
    messages
    redir END
    let s:lastmsg=get(split(s:messages, "\n"), -1, "")
    
    Run Code Online (Sandbox Code Playgroud)