如何维护基于emacs的知识库?

时间:2010-01-06 16:58:12

标签: emacs org-mode knowledge-management

我一直在使用org-mode一段时间,我现在保持它非常简单,只有两个文件:
一个充当收件箱,具有记忆模式
另一个我坚持从收件箱处理的任何东西

这对管理有些“可操作”的项目非常有用,但我不断添加一些更通用的东西,我不需要日常工作(如何,阅读笔记等),所以它变得缓慢而难以管理。

我自己关注的材料不适合/ projects / tasks / sub-tasks范例,它们更像是关于选定主题的小知识小块,这些知识在分类和管理方面本质上更复杂。

我一直想知道可以使用什么样的结构来处理这种信息(分类和检索),以及是否有其他模式可以帮助完成这项工作?


我想这个问题没有预先答案,因为每个人都有不同的需求 Noufal gave good conceptual tips我会记住,但总的来说,接受的答案提供了更实用的观点,链接的资源是一个伟大的阅读。

8 个答案:

答案 0 :(得分:27)

我认为这篇关于如何使用组织模式发挥最大潜力的优秀文档对您非常有帮助:"Org Mode: Organize Your Life In Plain Text"。这是冗长的阅读,但相信我,完全值得努力。

更新: 您可以使用文档中提到的remember-mode section作为用例。 (我将它用于相同的用例)记住模式非常方便快速记录。当我必须存储随机观察或不会出现在任何其他地方的信息时,我会使用它。我使用以下模板记住:

(setq org-default-notes-file (concat org-directory "/remember-notes.org"))
(setq org-remember-templates
  `(("Todo"    ?t "* TODO %?\n  %i\n" ,(concat org-directory "/remember-notes.org") bottom)
    ("Misc"    ?m "* %?\n  %i\n"      ,(concat org-directory "/Notes.org")   "Misc")
    ("iNfo"    ?n "* %?\n  %i\n"      ,(concat org-directory "/Notes.org")   "Information")
    ("Idea"    ?i "* %?\n  %i\n"      ,(concat org-directory "/Notes.org")   "Ideas")
    ("Journal" ?j "* %T %?\n\n  %i\n" ,(concat org-directory "/journal.org") bottom)
    ("Blog"    ?b "* %T %? :BLOG:\n\n  %i\n" ,(concat org-directory "/journal.org") bottom)
    ))

正如您所看到的,misc注释和其他信息在标题Misc and Information下的notes.org文件中。如果我正在制作的音符不属于上面定义的任何类别,它将被归档到默认文件(remember-notes.org)中,并且我总是可以在方便的时候将其重新填充到另一个位置。这使得我记笔记,记下随机的想法,这些事情非常简单,而不会把焦点从我目前正在做的工作上拿走。

答案 1 :(得分:8)

我个人保留一个项目目录列表,其结构有些类似。每个都有一个tasklist.org,一个跟踪子目录(我在那里进行项目估计和时间跟踪,并始终保持日记,这是项目的主要事物 - 它将链接到项目的其他文件),一个docs子目录,通常包含我要发布的东西(项目的文档,提案等)。我将我的议程文件发送到每个子目录中的tasklist.org,以便我的议程正常工作。


我认为数据的组织会在您的情况下发生一些变化(可能是“函数式编程”等主题)。我对层次结构有多大帮助持怀疑态度,因为这会将你限制在一种看待事物的方式(标签与文件夹再次)。以下是一些想到的事情。

  1. 保留一个“主”组织文件,该文件包含指向其他内容的所有“有趣”顶级片段的链接(类似于我上面提到的日记)。
  2. 正确标记所有材料(一段时间后您将使用一组有用的标签),然后使用标签搜索功能快速搜索文件。这假定所有文件都在agenda-files中。
  3. 最后,如果您的数据过于异国情调而无法放入结构中,您可以考虑使用全文索引器(如xapian)并将其集成到您的Emacs中。有人对here进行了一些讨论。

答案 2 :(得分:7)

  

[org-mode]非常适合管理一些“可操作”的项目,但我不断添加更具一般性的东西,我不需要日常工作(怎么样,阅读备注等),所以它变得缓慢而难以管理。

我是David Allen及其Getting Things Done方法的追随者。我在他推荐的三个列表中使用Emacs:

  • 下一步行动

  • 项目资源

  • The Someday / Maybe list

  

我自己关注的材料不适合/ projects / tasks / sub-tasks范例,它们更像是关于选定主题的小知识小块,这些知识在分类和管理方面本质上更复杂。

     

我一直想知道可以使用什么样的结构来处理这种信息(分类和检索),以及是否有其他模式可以帮助完成这项工作?

对于这类信息,我已经远离emacs。相反,我保留了一个目录~/etc/howto,并在该目录中放置了包含“在所选主题上的小知识块”的文件,其中关键标准是信息具有长期价值

我可以用Emacs搜索这个目录,但是我的Emacs Lisp并不是那么热门,所以我写了一个howto shell脚本(为清楚起见省略了一些错误检查):

case $# in
  1) ;;
  *) echo "Usage: $0 <topic>" 1>&2; exit 2 ;;
esac

topic="$1"

# Note the ordering: first exact matches, then beginning matches, then any matches

set xxx `find $HOME/etc/howto/. -name "$topic"     -not -type d -print` \
        `find $HOME/etc/howto/. -name "${topic}?*" -not -type d -not -name '*~' -print` \
        `find $HOME/etc/howto/. -name "?*$topic*"  -not -type d -not -name '*~' -print`
shift

case $# in
  0) echo "No file found matching *$topic*" 1>&2 ; exit 1 ;;
  *) for i
     do
       less "$i"
     done
     ;;
esac

示例包括:

  • howto football按顺序显示三个小块:

    • 指示我的妻子如何在电脑上录制足球比赛

    • 当我收到足球比赛门票时,我的准确说明以及如何打扮

    • 转码足球比赛的说明,以便可以通过网络传输并远离家庭观看

  • howto filesystem会提供有关如何复制文件系统的说明

  • howto batteries显示推荐的可充电电池列表

我不使用Emacs的一个原因是我的真实脚本比你上面看到的要复杂一点:它还处理PDF和djvu文件,所以例如howto razor会显示一个djvu文件我的电动剃须刀随附的手册。

我在主目录或子目录中有超过500个项目,即使按照这种规模,系统也能很好地适用于我。我希望你也觉得它也很有帮助。

答案 3 :(得分:5)

过去我曾尝试过多种方法来管理知识库。我有各种各样的“知识块”(顺便说一句,谢谢,我非常喜欢这个术语)各种各样的主题,从如何设置apache tomcat ssl证书,到每月家庭预算的清单,到保持在训练中完成的重量和代表清单。

我已经尝试将这些保存在wordpress博客,个人维基上,使用笔和纸等。

最后,emacs和org-mode对我来说是明显的赢家。我喜欢有能力开始简单,并根据需要构建更复杂的功能。我已经使用了Sacha Chua描述的很多提示。

在我的情况下,我总是把一堆笔记(更正式和有组织)与行动项目(不太正式)混合在一起。通常,我维护一个主“操作项”列表,然后为每个主题的注释创建一个单独的文件。到目前为止,grep对我很有效,可以快速找到包含注释的文件。我经常会创建一个emacs书签C-x r m来快速导航到笔记文件。

简单博客,CMS和wiki(如Drupal和Wordpress)擅长分类和检索。也许您可以将组织文件导出为html并将其发布到博客,cms或wiki?挂钩blog / wiki / cms标记功能可能并不困难。

答案 4 :(得分:4)

在工作中,我们使用维基(实际上,几个 - 全局维基加上每个项目的维基)。它非理想用于非分层数据,但也可用于分层数据。它是可格式化的,超文本的,可链接的,可搜索的,可共享的,但也是可拥有的,它维护历史和其他好东西。

就个人而言,我过去常常也使用维基。但是现在,我通常只是忘记了事情。更容易。

答案 5 :(得分:3)

您可以通过将备注保存在单独的文件(或每个广泛主题的一个文件)中来加速组织模式,该文件未包含在通常的议程文件列表中。自定义org-agenda-files以查看列表。

使用org-remember快速输入注释,不会中断您的流程。要么在当时标记它们,要么将它们保存在某个地方以便稍后重新编译。您可以在记住模板中使用标记(自定义org-remember-templates)来标记备注以进行重新标记,并使用自定义日程搜索(org-agenda-custom-commands)列出它们。

使用相关主题标记每个注释,并使用议程视图的搜索工具来查找它们。您可以定义知道查找正确文件的自定义搜索,也可以访问该文件并将议程搜索限制为该文件。

我保留了一个笔记文件,你的问题让我回过头来开始标记它们。干得好!

答案 6 :(得分:3)

我在单个目录中的.rst(reStructuredText)文件中提示。每个文件都有自己的主题。

对于搜索,我使用 M-x发生,或 M-x lgrep M-x ack

Web托管示例:http://tips.defun.work/frame.html并且很容易将这些页面转换为博客,就像解决方案一样。

使用构建脚本的原始资源:http://hg.defun.work/tips/

reStructuredText 格式的主要优点:

  • TOC支持。
  • include语法。
  • 能够在HTML网站中构建基于JavaScript的全文离线搜索索引,其中包含TOC,索引,参考 Sphinx !!
  • 记住 Markdown 在可扩展性方面很糟糕,RST具有通过令牌标记数据的常规语法,并包含任何纯文本格式作为内联到您的文档中。考虑使用dot,编程语法突出显示等的图表

答案 7 :(得分:2)

  • 我所关心的材料不适合/ projects / tasks / sub-tasks范例,它们更像是关于选定主题的小知识小块,它们本质上更难以分类和管理。

使用书签和Bookmark+。除了单个文件之外,您还可以为文件和目录的创建书签,还可以tag书签或文件,la delicious,用于组织和搜索目的。