我有一台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}
答案 0 :(得分:2)
状态行会经常更新(每次都行动!),这对于调用外部脚本来说太频繁了。
查看:help autocommand-events
,并使用:autocmd
来更新Vim变量,然后将该变量包含在状态行中。合适的活动可能是:CursorHold
,FocusGained
,BufRead
: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读取该文件。