paw.el外语学习,高亮笔记,单词本,等一体的新插件(Emacs的蒙哥阅读器、LingQ)

docker可以。现在,越做越多功能了,要写的东西太多。先做完我想做的功能。准备开始做日语等级高亮,还有一个很重要的功能就是保存和导出已经知道的单词到文本用来后期维护,已经知道的单词不需要高亮,这样的做法是能随时更改和查到自己会了哪些单词,增加成就感。

非常重要,加油

更新:小功能,大体验,“不懂哪里指哪里”,上个版本利用ecdict批量将整个buffer的单词都扫描一遍,蓝色高亮,如今,只要鼠标停留一下,就能利用help-echo将单词的词典意思显示出来,因为高亮的时候单词的意思已经添加进去了,所以是不需要再调用外部词典查词了。

同时也更新了日语JLPT的支持,支持N5~N1一共14000多的单词自动高亮,并支持自动分割,实现"指一指",或者"点一点"就能查词,轻松查看单词的等级和意思(目前只有日语对英文的意思)。提供选项paw-jlpt-tags,可以进一步利用日语等级过滤单词。

经过了长时间的不眠不休的努力,paw.el的基础功能已经开发完毕,今天开始修bugs。有时间的话,就添加新功能,也欢迎大家提新需求。我先学好英语和日语,回头再根据兴趣添加新语言,接下来可能是西班牙语和韩语,如果有兴趣的同学,可以帮忙支持新语言。

很多时候,反思,如今的AI时代,还需要学习外语吗?也许,有了强大的翻译,不需要了。但是,作为人的本身而言,学习不同的外语能锻炼大脑,学习外语也能开阔视野,被动的接受AI的结果,终究是AI告诉我的,并不属于我的,知道的不是自己的,悟到才是属于自己的。

因此,这个项目的愿景,是有朝一日可以支持大部分的主流语言,从而成为全网最强开源语言学习工具。

为了全开源化的目的,避免外部服务崩溃或者有一天不能用,最新版本已经支持本地单词本功能,除了翻译和网络查词,全部功能都能离线进行。

本工具原理很简单,跟其他外语工具完全不一样的在于,这个工具会在后端利用python或者其他开源工具对文本Token化,然后利用开源的SQLITE词典批量查词,同时,点击单词利用sdcv、go-transalte、调用外部网页或者工具,gptel翻译或者问问题,一切来说,Emacs只是一个前端,所以是绝对可以做到的支持大部分的主流语言。

1 个赞

迫切需要一个能复刻LZ效果的办法(PC上换了doom也没试出来 :sweat_smile:),以及上手教程(比如查词加入生词本,如何查看和导出)

以及paw更新后如何同步更新

再次赞强大

1 个赞

看来你想要我整个Emacs的其他配置。。这还挺多要说的,有空弄一个教程系列,或者将更多配置开源到paw吧。

1 个赞

嗯嗯,或者工程浩大的话

能达到以下使用场景即可:

  1. 从GNU下载的win版本29.3安装
  2. 复制一个最简单的init.el
  3. 打开一篇英文文章,能左右3:1左右分屏,右边能出现查词结果
  4. 快捷加入生词本并导出 done

关于更新。因为时不时有新文件加入,建议完全删除后,再安装一次就可以了。同时,看看Readme的新改动,我测试过的基本功能都在Readme里面。特别留意需要python安装缺少的模块。

单词本批量导入目前只支持欧路的。使用起来的确有点小窍门,如果批量导入其他单词本的,例如CSV的,可能需要写一个入口函数。欧路的所有单词的同步,用这两个函数 paw-sync-all-words(同步全部单词本),paw-sync-studylist(同步一个单词本)(Ctrl-u M-x paw-sync-study-list选择一个单词本,不用Ctrl-u就只选择id为0的默认单词本),如果看不到单词本,运行paw-get-all-studylist,提前获取服务器所有单词本的信息,再运行其他两个命令。

如果是已经知道的单词,就不需要导入,配置这两个入口

     (setq paw-ecdict-known-words-files `(,(expand-file-name "eudic.csv" org-directory)
                                         ,(expand-file-name "english.txt" org-directory)))
   (setq paw-ecdict-default-known-words-file (expand-file-name "english.txt" org-directory))

弹出窗口分屏的话,很多很多方案,我用doom的,可以用 set-popup-rules!,对两个buffer进行一个控制就行了

(set-popup-rules! '( 
                    ("^\\*paw-view-note*" :size 0.35 :side right :quit t :modeline t :select nil :ttl nil :vslot 2 :slot 1)
                    ("^\\*paw-sub-note*" :height 0.5 :side right :quit t :modeline t :select t :ttl nil :vslot 2 :slot 2)

)

加入单词本,视乎你加入到欧路还是加到本地。

加入欧路,用paw-add-online-word,每次加词会问你选择哪个单词本的,跟欧路这边是同步的。加入本地用paw-add-offline-word,添加本地单词本之前,配置一下单词本paw-offline-studylist。都有快捷键,看看paw-annotation-mode-map,和paw-view-note-map

导出单词目前有一个函数,paw-export-notes-to-csv,可以将全部笔记导出到csv。

还有欧路这边反向同步会覆盖在Emacs本地数据库原有的单词,所以使用的时候建议备份数据库,刚开始操作没有数据就没所谓了。不过同步的过程中会问你是否要同步的,跟指示操作。

如果要一体化体验,同步完所有单词后,就在欧路开一个单词本专门给Emacs的,这样子更好管理,以后欧路加单词就不要加在Emacs专属单词本,Emacs加单词也不要加在欧路的单词本,这样子就很大程度避免了单词同步覆盖问题。当然如果你熟悉我的插件后,就没有这个必要了,可以看情况行事。

好的,感谢指点,我学习消化下

本地单词本对我就够用了

不客气。本地单词,还要配置

(setq paw-add-button-online-p nil),这样子点击添加按钮就不会添加到服务器了。如果在paw-view-note buffer里面,运行paw-add-offline-word,此时光标底下有文字的话,会自动获取文字当意思,我自己喜欢用这个方法快速截取光标下的翻译的中文当单词的中文意思。

同时对同一个单词添加多次的话,是不会添加很多次的,不过后添加的会对前添加的单词的Saved Meaning进行覆盖,所以,可以利用这个技巧更改单词的Saved Meaning。

添加单词后,默认不自动更新paw-view-note buffer(但是对应的单词的高亮是会同步更新的),需要手动运行paw-view-note-refresh,快捷键g r。需要自动更新的话,配置tpaw-view-note-after-adding-offline-word,这样子每次添加完单词,自动运行更新。我个人认为不需要经常更新paw-view-note buffer,频繁更新影响体验。

欢迎加入讨论群:Telegram: Contact @emacs_paw

越来越强大,感谢作者的付出!

附赠今日折腾心得,在win11 wsl2 里,用 Debian 更好配置一些 Ubuntu 在 nltk.downloader 上卡住, Debian 顺利(环境一样) 当然 ubuntu 也有个好处是,图标能位于开始菜单上,直接按win就能选和启动

似乎没配置也能按大写A来执行 paw-add-offine-word,而且能用 paw-export-notes-to-csv 导出 这里我没太理解,是要如何配置呢,是不是一个英语,一个日语,配置的意思是保留一个?这样就不用保存时按两次回车了(英语)

感觉加入的生词是写入数据库里的,因为没在org目录下看到对应文件;如果换机器或换发行版了,这个离线生词表怎么备份恢复呢

单词本stufylist是公用的,不分语言。csv导出只是方便用来导入到其他软件。目前不支持csv导入恢复。备份的话,需要备份数据库本身。目前,org只是过渡文件,并不保存,保存的只有附件paw-add-attachment和图片paw-add-image。

更新:增加Anki的Support,配置参考GitHub - chenyanming/paw: Emacs Annotation and Language Learning tool.

2 个赞