2

我有一台 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}
4

3 回答 3

2

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

查看:help autocommand-events,并使用:autocmds 更新 Vim 变量,然后将该变量包含在状态行中。合适的事件可能是:CursorHold, FocusGained,BufRead

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

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

于 2012-07-09T13:49:58.463 回答
1

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

于 2012-07-09T16:04:21.897 回答
1

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

无论如何,这应该工作:

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

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

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

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

:nnoremap <F11> :exec('echo(sytem("date"))')<CR>
于 2012-07-09T12:42:22.180 回答