我知道我的问题标题不够解释,所以让我尝试解释一下。
我创建了一个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。
切换输出的简单直接方法:
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