如何在VIM中清除函数调用的输出?

如何在VIM中清除函数调用的输出?,vim,Vim,我知道我的问题标题不够解释,所以让我试着解释一下 我创建了一个显示当前电池状态的vim功能。我的职能如下: function! BatteryStatus() let l:status = system("~/battery_status.sh") echo join(split(l:status)) endfunction 我已将上述函数映射为nnoremap:callbatterystatus()。现在,当我按下F3时,它显示我的电池状态为放电,56%,05:01:

我知道我的问题标题不够解释,所以让我试着解释一下

我创建了一个显示当前电池状态的
vim功能
。我的职能如下:

function! BatteryStatus()

     let l:status = system("~/battery_status.sh")
     echo join(split(l:status))

endfunction
我已将上述函数映射为
nnoremap:callbatterystatus()
。现在,当我按下F3时,它显示我的电池状态为放电,56%,05:01:42剩余,这是我所需的输出,但我的问题是如何使上述输出消失

当前发生的情况是在函数调用之后,它会连续显示输出,我必须手动使用
:echo
清除命令窗口(

那么,在我的功能中需要做哪些必要的更改,以便实现类似切换的行为

电池状态。sh

acpi | awk -F ": " '{print $2}'

附:这是学习练习的一部分。因此,请不要建议选择
vim脚本

您可以定义
autocmd

:au CursorHold * redraw!

Vim在空闲后4秒重绘自身(由
updatetime
选项设置)。

切换输出的简单直接方法:

let s:battery_status_output_flag = "show"

function! BatteryStatus()

    if s:battery_status_output_flag == "show"
        let l:status = system("~/battery_status.sh")
        echo join(split(l:status))
        let s:battery_status_output_flag = "clear"
    else
        echo ""
        let s:battery_status_output_flag = "show"
    endif

endfunction
注意
s:
前缀,请参见
:帮助脚本变量

您只需按住Ctrl+L键即可清除状态信息
vim
function! pseudocl#render#clear()
  echon "\r\r"
  echon ''
endfunction

行。

您可以使用echon“\r\r”echon'',谢谢这太完美了。重画!对我来说是如此的忽隐忽现。我很惊讶,除了这样,他们没有办法清除命令行。