显示VIM状态栏中的电池使用情况

时间:2012-07-09 11:07:34

标签: vim statusbar

我有一台Macbook 10.7。 我总是最大化终端窗口,所以如果我想检查电池状态,我必须将鼠标移动到顶部或退出最大的vim窗口。 所以我想在vim状态栏中显示电池。 这是我做的: 创建一个文件并使其可执行。

vi /bin/battery

#!/bin/bash
ioreg -l|grep -i capacity | tr '\n' ' | '|awk '{printf("%.1f%%", $10/$5 * 100)}'

现在如果我在终端输入“电池”,它将输出87.6%的东西。 我的问题是我应该如何在VIM状态栏中显示这个东西?

确定!感谢Romainl和Ingo的帮助。阅读和测试后,我认为我得到了一个“完美”的解决方案。至少我很满意。 :P

以下是详细信息。

sudo vi /bin/battery

#!/bin/bash
/usr/sbin/ioreg -l|grep -i capacity|tr '\n' ' | '|awk '{printf("%d%%",$10/$5*100)}'>~/.battery

crontab -e
#check battery every 4 mins.
*/4 * * * * /bin/battery

电池脚本输出到文件。它每4分钟运行一次(由crontab控制)。 其余部分与Ingo的回答大致相同。

:let g:battery = '???'
:autocmd CursorHold * let g:battery = system('cat ~/.battery')
:set statusline+=%{g:battery}

3 个答案:

答案 0 :(得分:2)

状态行会经常更新(每次都行动!),这对于调用外部脚本来说太频繁了。

查看:help autocommand-events,并使用:autocmd来更新Vim变量,然后将该变量包含在状态行中。合适的活动可能是:CursorHoldFocusGainedBufRead

:let g:battery = '???'
:autocmd CursorHold * let g:battery = system('/bin/battery')
:set statusline+=%{g:battery}

(和/或定义一个映射来手动更新变量。)

答案 1 :(得分:1)

您的脚本在我的MacPro上没有输出任何内容,但我猜这有些正常(没有电池)。

无论如何,这应该有效:

:set statusline+=%{system('/bin/battery')}

请注意,状态行经常更新:/bin/battery每秒可能被调用十几次。这对你的电池听起来不太好!

您是否考虑过设置通知系统(例如使用Growl)?

或者只是一个自定义映射:

:nnoremap <F11> :exec('echo(sytem("date"))')<CR>

答案 2 :(得分:1)

最好设置一个cronjob并将电池电量放在一个文件中,然后从vim读取该文件。