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

时间:2012-08-30 20:51:10

标签: vim

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

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

function! BatteryStatus()

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

endfunction

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

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

因此,在我的函数中需要进行哪些必要的更改,以便我可以实现像行为一样的切换。

battery_status.sh

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

PS:这是学习练习的一部分。因此,请不要建议替代vim scripts

4 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:2)

您可以定义autocmd

:au CursorHold * redraw!

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

答案 2 :(得分:1)

vim
function! pseudocl#render#clear()
  echon "\r\r"
  echon ''
endfunction

答案 3 :(得分:0)

您只需 Ctrl + L 即可清除状态信息 线。