在最开始了解到这个应用的时候,我无法简单地用一句话来形容这个应用,大部分人将它称为背单词软件,单词记忆应用,部分人有拿他作为知识管理应用,甚至有人拿他来学习乐谱,诗歌,但总之如果要用简单的话来描述这个软件,那么跨平台必定是关键词,另外一个关键词就是卡片,在另外一个就是循环记忆,那么至于卡片上承载什么样的内容,就完全由用户来决定了。

德国心理学家[[莱特纳]]在 1970 年出版了他一部重要的著作《How to learn to learn》,他在这本书中引用艾宾豪斯的遗忘曲线,发明了「莱特纳系统」,也就是「间隔式复习」的方法,让记忆达到最佳。

Anki 就是间隔式复习的一个实现方式。

很长一段时间内我都无法很好的尝试使用 [[Anki]] 来进行记忆,烦恼我的一点理由就是 Anki 的卡片制作过程,我知道很多人都说学习记忆是在卡片制作过程中,但是我发现制作卡片花费的时间已经超过我使用纸张来记录的时间。所以很长一段时间内 Anki 就躺在我所有的设备上,虽然偶尔会打开一下,但是依然没有养成每天记忆的习惯,反而在其他背单词软件中坚持了下来。但是在使用线程的单词记忆软件的时候,我不时的会想起 Anki 来,也渐渐地发现线程的单词记忆软件有其自身的缺点,而这个缺点正是 Anki 可以弥补的(虽然可能需要花费一些时间来熟悉 Anki)。

比如使用通常的软件来背单词,优势在于这些软件可能事先已经准备好了单词集,发音,例句,讲解等等,然而在使用过程中就会发现这些东西始终是字面上的东西,即使记忆了和多遍,依然没有被录入到自己的脑袋里。反而有些时候,比如某一次到异国他乡遇到的一个单词,像烙印一样深深地印在脑子里,每一次想到这地方脑海里便会回忆起这个单词。丝毫没有可以去记忆,但潜意识中就已经将这个单词记忆下来了。所以这个时候我又想起了 Anki,对于想要记忆的东西,不妨用自己的语言描述放到 Anki 的背后,写一段故事也好,描述一个场景也好,自己写下来的东西,每次翻到的时候记忆总是要比别人准备好的东西要深刻。

另外一个使用 Anki 的误区便是,当你发现你在制作卡片时陷入了不间断的 Copy/Paste ,那么请立即停下来,就像这里 说的那样,首先去理解你要去记忆的东西,否则你会陷入无限的知识债务。这一点和做笔记的时候不停摘录而不去消化,买书屯书而不读是一样的,理解了才能真正成为你自己的东西。

end up accruing a lot of ‘knowledge debt’ that you’ll have to pay for down the line.

应该花费更多的时间来理解需要记忆的内容,而不是在制作卡片上。当对内容理解越深刻,那么以后 reviewing 或者 recalling 的时候花费的时间也会减少。

下载

官方网站:

下载解压之后有 README,看其中说明,安装即可。

使用场景

任何需要记忆的内容都可以使用 Anki 帮助进行,Anki 不感知内容,支持图像,音频,视频,甚至科学符号(LaTeX),比如你可以使用 Anki:

  • 学习一门语言,通过 Anki 背诵记忆单词,学习语法知识
  • 准备医学或者法律考试
  • 记忆人的名字或者脸
  • 记忆长段的诗歌
  • 甚至记住吉他的和弦
  • 学习哲学家的主要观点

理念

Anki 背后的理念:

  • active
  • recall
  • testing
  • spaced repetition

几个概念

官方文档已经非常细致,可以直接阅读,这边只列举一些比较重要的内容。

  • Cards 卡片
  • Deck 卡组,包含卡片的集合,可以导出为 apkg 文件

Cards

卡片,Anki 的核心概念,正面问题,背面答案,便于组织记忆

Deck

来自朗文的解释:a set of playing cards,翻译为一组卡牌

Profile

朗文的解释:a short description that gives important details about a person, a group of people, or a place,翻译为档案,介绍也都可以,在 Anki 的 File 菜单中,可以切换 Profile,不至于导入别人的卡牌之后弄乱自己的设置,或者自己在使用时也可以根据不同的场景定义不同的 Profile。

学习

学习过程中,打开 Decks 可以看到一个 Overview,卡片的种类被分为三种类型:

  • New, never been studied before
  • Learning, cards have been seen for the first time recently, and are still being learnt
  • To Review, cards were previously learnt, and now need to be reviewed so you don’t forget them

首次学习

进入到卡片学习,底部会有多个按钮,第一次学习的卡片会出现三个按钮:

  • Again moves the card back to the first step
  • Good moves the card to the next step.
  • Easy immediately converts the card into a review card, even if there were steps remaining

Reviewing

再次学习一个卡片的时候,也就是 review 阶段时,有四个按钮

  • Again,let Anki to show the card more frequently in the future
  • Hard,shows the card at a slightly longer delay than last time, and tells Anki to show the card more frequently in the future.
  • Good tells Anki that the last delay was about right
  • Easy tells Anki you found the delay too short

上面的按钮对应的快捷键是 1,2,3,4。

每一张卡片都会经历三个阶段:新卡片、学习中、结束。

学习资源

官网那一定是最全的,包含各国语言

插件

Add-ons

推荐几个(只适用于我目前使用的 2.1 版本,随着时间变化,下面的 id 可能失效):

  • 900455869 TTS 发音
  • 1612375712 触发全屏
  • 2055492159 AnkiConnect
  • 775418273 WordQuery https://github.com/finalion/WordQuery 用来简化制作卡片的过程,查询单词立即自动制作卡片,支持从 mdx stardict 字典中直接检索,支持网络字典

AnkiConnect

[[AnkiConnect]]源码地址:https://github.com/FooSoft/anki-connect

这个插件将 Anki 的功能暴露一份 RESTful 接口,这样就可以用接口方式来操纵 Anki。安装开启该插件后会监听 8765,默认绑定 HTTP 服务到 127.0.0.1,只有本机可以访问该服务。如果想要其他网络访问,可以设置环境变量 ANKICONNECT_BIND_ADDRESS0.0.0.0

FastWordQuery

可以从不同的来源将词添加到 Anki

自动化制作卡片

Saladict to Anki

2021 年更新

之前推荐的 Chrome to Anki 插件已经很久没有更新,所以又找到了 Saladict 这样一款插件,在设置中可以很方便地找到如何连接 Anki。

Chrome to Anki

需要借助一款 Chrome 插件

和一个 Anki 插件

这两个插件都是开源 12 的,看官方的说明也很简单就略过了。

GoldenDict to Anki

虽然目前一直在寻找方法能够间 GoldenDict 查词记录自动制作卡片到 Anki,但是目前尚未找到合适的方法,虽然有了解到可以使用 mdx-sever 共享一个 HTTP 服务,然后使用上面的方法自动制作,但感觉依然有些麻烦。Anki 上的卡片还是自己手动创建比较稳妥。

Kindle to Anki

对于 Kindle 我很少将它连到电脑上做导出导入的事情,所以这个不准备弄了。

如果对于 Kindle 有重度依赖,并且希望使用 Anki 的方式来整理标注的话,可以试试 ankindle 这样一个插件,可以导出单词和标注,并且制作成 flashcard 用来记忆。

Tips

几个小小的 tips.

  • Add-ons 固然是非常有用,非常强大的,但是千万不要在上面花费过多的时间。在软件工程领域有句话,越早的优化可能带来灾难,get things done 要比优化重要的多。
  • 在 Revising 卡片的过程中,及时的将卡片标注为是否需要编辑,然后及时的更新卡片的内容

搭建 Anki 同步服务器

参考官方的 repo

需要注意的是目前这个 Anki Sync Server 只支持特定版本的客户端,需要到 GitHub 页面自己确认一下。

Install

可以使用这个 docker-compose:

version: "3"

services:
  anki-sync-server:
    container_name: anki-sync-server
    image: kuklinistvan/anki-sync-server:latest
    restart: always
    ports:
    - "27701:27701"
    volumes:
    - ./data:/app/data

服务端创建用户

sudo docker exec -it anki-sync-server /bin/sh
# help
/app/anki-sync-server/ankisyncctl.py --help
# add user
/app/anki-sync-server/ankisyncctl.py adduser username
input password

# list users
/app/anki-sync-server/ankisyncctl.py lsuser
# modify password
/app/anki-sync-server/ankisyncctl.py passwd username

Linux 等桌面客户端

菜单,工具,插件,安装插件 2124817646:

http://1.2.3.4:27701
http://1.2.3.4:27701/msync/

Android 客户端配置

在客户端,设置,高级设置,自定义同步服务器中设置。

reference

  1. https://github.com/ninja33/anki-dict-helper 

  2. https://github.com/FooSoft/anki-connect