分页: 1 / 1

lazyword简易版本(shell版本)

发表于 : 2009-03-23 12:42
lerosua
转自http://www.lerosua.org/2009/03/lazyword%e7%ae% ... %e6%9c%ac/

linuxdesktop上tx介绍了一个新软件,叫lazyword, 用来不知不觉背单词的。我觉得它提的那个概念极好,就是复习stardict查询过的单词。虽然还处于预览阶段,不过我还是去下载了。

才发觉它不是我那杯茶。不是说他不好,我绝没这意思,只是我这人从来尽量不用qt的东西的。何况是qt的开发环境呢,所以lazyword也就编译不了了,它是基于qt4.5的。二来它未必考虑sdcv的情况吧,这点未证实。

于是无聊就写了个脚本,实现定时显示sdcv查询过的单词,也算是lazyword的简易版本吧。

代码: 全选

#!/bin/sh
#lazyword easy version by lerosua
book=~/.sdcv_history
stime=15000
itime=100
 
while [ true ]
do
line=`wc -l $book |awk '{print $1}'`
num=`expr $RANDOM % $line`
word=`sed -n "${num}p" $book`
content=`sdcv -n $word`
notify-send -t $stime  "$content"
 
sleep $itime
done
脚本主要依赖sdcv(stardict的命令行版本,平时我用它查询单词),notify-send(显示notify用)。 每一百秒显示一次查询过的单词,每次显示15秒。
没有用sdcv的朋友可以自定义单词本,换掉book变量即可。单词本要求就是一行一个单词而已,时间也可以随便定义。都是很简单的语句,大家都明白,自取所需吧。

更新:如果是使用sdcv的历史记录作为生词本的话,有可能出现漏词的现象,而查询过多次的情况下,这词就重复出现两三次而把其它没查过的词挤掉。解决的办法是取出这个词马上把它从历史记录中删除掉,不用担心,因为后面用sdcv查询一次就会加上。而这样也能让单词本流动从而使随机取得的单词更完善(我想象的)。
在取得word后面加上这句就行了:

代码: 全选

sed -i "${num}d"  ~/.sdcv_history
实际上可以直接写成$book的,但我怕某些人不小心删除掉它自己的单词本就不好了。这样可以表明这是sdcv_history专用的,也不怕人误用了,呵呵。

Re: lazyword简易版本(shell版本)

发表于 : 2009-03-23 13:23
想入非非
看成lazyubuntu了 :em06

Re: lazyword简易版本(shell版本)

发表于 : 2009-03-23 13:25
lerosua
想入非非 写了:看成lazyubuntu了 :em06
:em20

Re: lazyword简易版本(shell版本)

发表于 : 2009-03-23 13:30
xiooli
有没有可能写一个vim插件,输入单词时去查stardict,以菜单的形式显示可能单词?

Re: lazyword简易版本(shell版本)

发表于 : 2009-03-23 13:47
lerosua

Re: lazyword简易版本(shell版本)

发表于 : 2009-03-23 13:49
eexpress
居然还sh的啊
:em04

Re: lazyword简易版本(shell版本)

发表于 : 2009-03-23 14:15
lerosua
sh的咋了

Re: lazyword简易版本(shell版本)

发表于 : 2009-03-23 16:41
xiooli
lerosua 写了:http://paste.ubuntu.org.cn/13536
这样的?
no,like this:

Re: lazyword简易版本(shell版本)

发表于 : 2009-03-23 17:19
lerosua
这个难度有点高 :em06

Re: lazyword简易版本(shell版本)

发表于 : 2009-03-23 17:21
wangdu2002
顶下Lerosua兄弟的大作! :em11