我知道我的问题标题不够清晰,所以让我试着解释一下。
我创建了一个显示当前电池状态的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
。
答案 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 即可清除状态信息 线。