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

如何获取vimscript中的最后一条回显消息?,vim,Vim,有没有办法将最后一条回显消息检索到变量中? 例如:如果我调用函数,则会: echo 'foo' 我可以将此“foo”检索到变量中吗? 谢谢 您无法检索上次回显的消息。但还有其他选择: 如果您可以在此函数调用之前放置一个:redir命令,然后放置另一个命令,则可以捕获它所回显的所有内容。但请注意,重定向不会嵌套,因此,如果函数本身使用:redir,则可能什么也得不到: redir => s:messages echo "foo" redir END let s:lastmsg=get(sp

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

echo 'foo'
我可以将此“foo”检索到变量中吗?

谢谢

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

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

    redir => s:messages
    echo "foo"
    redir END
    let s:lastmsg=get(split(s:messages, "\n"), -1, "")
    
  • 如果函数使用
    :echomg
    而不是
    :echo
    ,则可以使用
    :messages
    命令和
    :redir

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

  • 您还可以将其更改为
    1消息
    ,以仅获取最新的消息