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

Ran*_*Rag 5 vim

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

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

function! BatteryStatus()

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

endfunction
Run Code Online (Sandbox Code Playgroud)

我已将上述函数映射为nnoremap <F3> :call BatteryStatus()<cr>. 现在,当我按下F3它时,它会显示我的电池状态,这Discharging, 56%, 05:01:42 remaining是我所需的输出,但我的问题是如何使上述输出消失。

目前发生的情况是在函数调用之后它不断显示输出,我必须手动使用:echo来清除命令窗口(:)。

那么,需要在我的函数中进行哪些必要的更改,以便我可以实现类似切换的行为。

电池状态.sh

acpi | awk -F ": " '{print $2}'
Run Code Online (Sandbox Code Playgroud)

PS:这是学习练习的一部分。所以,请不要建议替代方案vim scripts

Ves*_*Ves 3

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

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
Run Code Online (Sandbox Code Playgroud)

注意s:前缀,参见:help script-variable