emacs - 结合组织模式捕获和钻取模块来学习词汇

标签 emacs elisp org-mode org-drill

我想使用 capture org-mode的模块创建一个我想学习的新单词的数据库,然后使用drill模块来学习它们(闪存卡样式)。

在我的 org-capture-templates我添加了以下内容:

("v" "Vocabulary" entry
               (file+headline (concat org-directory "/vocab.org")
                              "Vocabulary")
               "* Word :drill:\n%^ \n** Answer \n%^")

这是我借来的一个相当幼稚的模板from here .它工作得很好,但它太有限了。不幸的是,我对 elisp 还很陌生我不知道如何改进它。

我认为上述模板必须在以下几个方面进行改进:

标题 当前第一个输入字符串是(新)单词,并且标题是固定的。标题怎么可能是同一个(输入)词?我认为以下结果是可取的:
* Vocabulary
** Foo :drill:
Foo
*** Answer
What is foo

实际上,更好的方法是使用 3 个输入字符串。
  • 将成为标题的新词(例如 foo )。
  • 如果第二个为空,则它得到与 (1) 相同的字符串。否则,将字符串连接到 (1) 中的字符串。例如。作为第二个输入 bar将产生 foo bar .这将是条目的内容。
  • answer 中应该出现的单词定义副标题。

  • 重复 (再次查看 this )如果稍后我 try catch foo再次,我想知道它,并被指示编辑已经存在的条目 - 跳过所有输入。

    排序 捕获后,我认为对单词列表进行排序会很好。考虑到每个条目的标题就是单词本身,这应该不会太难。在这种情况下,可能可以使用 org-sort-entries功能。

    我知道这是一个相当大的问题,但我也认为如果可以在这里解决它,它将对许多用户有很大的用处。

    编辑:

    使用@juan_g 的建议,我改进了我的模板,现在它是:
    ("v" "Vocabulary" entry
                   (file+headline (concat org-directory "/vocab.org")
                                  "Vocabulary")
                   "* %^{The word} :drill:\n %t\n %^{Extended word (may be empty)} \n** Answer \n%^{The definition}")
    

    我没有设法将第二个输入的默认值设置为第一个。我试过类似 %^{Extended word (may be empty)|%\1}但它返回 ^A这没有帮助。

    无论如何,这个改进的版本似乎已经可以使用了。

    最佳答案

    关于输入问题,在 Org Mode Manual: 9.1.3.2 Template expansion ,有 %\1 特殊转义码:

    %\n Insert the text entered at the nth %^{prompt}, where n a number, starting from 1.



    重复问题可能需要一些 Emacs Lisp 编码。

    有关排序,请参阅 C-c ^ (org-sort)。

    顺便说一句,org-drill看起来确实是一个非常有趣的包,基于 SuperMemo 的间隔重复算法。

    关于emacs - 结合组织模式捕获和钻取模块来学习词汇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14666625/

    相关文章:

    emacs - Emacs 中的引用/书目管理 : helm-bibtex, org-ref, ebib

    emacs - 使用 GTK 在 emacs 23.2 中滚动滞后

    file - 在 Emacs 中打开文件的速度非常快,类似于 Sublime 的 Goto Anything

    emacs - 如何在 Emacs Lisp 中创建列 View ?

    list - 我将如何在 elisp 中制作矩阵? (以及 Emacs Cal 是如何做到的?)

    emacs - 使用 emacs lisp 以编程方式设置缓冲区的主要模式

    elisp - 如何在新框架中访问文件

    emacs - 在组织模式下将CREATED date属性添加到TODO

    emacs - 如何将组织模式表转换为原始选项卡格式?

    emacs - header 中的组织模式任务日期 - 可能吗?