2012年5月13日星期日

[emacs] 为什么说org-mode是个神器

Org-Mode 是Emacs上的一个扩展包,算是个神器。概括地说,它是一种major mode,可以让用户编写结构 化带有格式的文档——不过是用带有简单标记的纯文本来表达格式的,这点跟markdown和restructuredtext有 点像。

但这个东西却是一个神器,你可以用它来写文档、写博客、写胶片、记笔记,甚至GTD、电子表格,甚至编写代码!

1 写文档

1.1 相对其它的文字处理程序而言,org-mode优点是:

  • 采用纯文本记录内容,你完全可以将文档纳入svn/git管理
  • 分节、列表的创建和导航都相当简单方便(你有没有在MS Word里面调整章节号死活调不对的经历?),一个 简单的tab键即可折叠起不关注的章节
  • 调整分节、列表的顺序相当方便:你不需要来回剪切、粘贴,你只需要M-up/down/left/right就可以了
  • 内嵌的代码片段也支持代码高亮哦,多种语言的代码/配置文件集于一处
  • 可嵌入图片、链接
  • 可以嵌入表格,甚至是带公式的电子表格
  • 可导出为HTML、Latex、DocBook等格式,后两种还可以进一步变成PDF格式

1.2 入门指导

Emacs中文网上的这篇Emacs的Org Mode包含了一些基本的入门知识: * 文档结构: 基本的分级标题、列表 * 添加脚注 * 表格 * 引用文字和代码 * 插入图片、链接

一些示例: [Emacs中文网(emacser.com)]的很多文章都是以org-mode文档投稿的,站长ahei把它们都放在 这个googlecode仓库里 了, 前面说的Emacs的Org Mode这篇文章的源文件就在这里, 各位可以对照着看看。

1.3 写博客

1.4 写胶片

1.5 一些高级用法

  • EMACS ORG-INFO.JS: 简单地在你的org文件头部添加 #+INFOJS_OPTS: view:info 然后你导出的HTML文件就可以呈现为texinfo的风格了:每次呈现一节, 按n显示下一节,按C显示目录,按i显示tags index... ([EMACS ORG-INFO.JS]这个页面就是用这种方式生成的,你 不妨点击它页面上的 HELP / toggle view 两个链接试试效果)
  • 嵌入UML diagram: Emacs中绘图 - ditaa篇 | Emacs中文网

1.6 (从格式上比较)跟markdown/ReST的区别

  • 内嵌的代码片段也支持代码高亮
  • 支持表格(不过ReST也支持)

2 记录笔记

3 作为GTD工具,跟踪待办事宜

个人对这个方面没有太大兴趣,所以没有深入折腾,下面列一些链接:

4 Literate Programming

Literate Programming是一种编程方法,是大名鼎鼎的高德纳发明的,我不知道怎么翻译,维基百科上翻译 为"文学编程", 我觉得也不是太恰当。大体的思想是: 将代码、设计文档都所有与一个项目相关的内容 都放在一个文件里,以一种与编程语言无关的结构化方式来表达整体的结构。

—— 估计还是没说清楚, 不过大家可以看看维基上举的例子。 另外ZoomQuiet一直在Leo编辑器 上 实践这种编程方式,他的wiki上也有相关介绍。 另一个介绍材料: 这个 IBM developerWorks - 点评 Python IDE 也有一段都有介绍Leo的文字。

org-mode不仅仅是可以用结构化的方式来存放代码块,而是可以执行这些代码块 (Evaluating code blocks - The Org Manual),并且可以将执行结果更新到org文档中去 (Results of evaluation - The Org Manual),还支持在一份org文档中同时使用多种编程语言 (Languages - The Org Manual)。

4.1 用org-mode管理你的dotemacs

这是org-babel的一个典型用途。这里有一份按org-mode方式改写的emacs-starter-kit: emacs24-starter-kit。 可供各位参考。

简单的步骤说明如下: 1. 新建立一个dotemacs.org文件,在这个文件里,你可以详细地用文档的形式来描述你的配置分类、注释, 将原来~/.emacs或者~/.emacs.d/init.el里面的elisp代码挪放到若干个#+begin_src#+end_src之间就可以了; 2. 在~/.emacs或者~/.emacs.d/init.el里加载dotemacs.org里面的配置: (add-to-list 'load-path "/somewhere/storing/org-mode/lisp") (require 'org-install) (require 'ob-tangle) (org-babel-load-file "~/.emacs.d/dotemacs.org")

详细一点的说明请看这里: Emacs Initialization with Babel. 或者参考上面的[emacs24-starter-kit].

5 其它用法

本文链接



(automatically copied by ifttt from http://www.cnblogs.com/bamanzi/archive/2012/05/12/org-mode-so-powerful.html)

2012年5月12日星期六

Firefox上一些我用于知识管理的扩展

我觉得知识管理有这么几个环节:接触/采集、消化/去芜存菁、存储和再创造1,前面这几个环节都是工具可以派上 用场的地方。在前端(采集和消化阶段),我的工具主要有两个:Firefox和手机(生活中学到的另说,而现在系统性地看书也比较少); 在后端(存储和再创造阶段),我用的工具主要是Firefox和Evernote(也用过一段Emacs里 面的org-mode)。

1. 知识消化

Read It Later(现在已经改名为Pocket)是我常用的一个工具。它是个"稍后阅读”服务,意即将网址保存到一个网 络列表,供有合适时间时再来一个个消灭。它有一个不错的Firefox扩展 ,也有iOS和Android客户端,这样的话, 我可以几乎随时将需要”稍后详读“的网址添加到列表,又几乎随时可以开始阅读。所以,这个工具我用作了“知 识管理流水线”的中间环节1

Read It Later logo Read It Later的Firefox扩展和iOS/Android客户端共有的功能:

  • 下载网页,供离线阅读。提供Web和文本两个版式。
  • 同步RIL列表
  • 修改RIL列表中各条目的信息,比如tag

Read It Later的Firefox扩展还有以下一些功能:

  • 因为是在浏览器上,所以有“添加到RIL"的功能(其它浏览器可以借助bookmarklet完成这个;而手机上,得其 它的浏览器来支持这个对接);
  • 与Google Reader集成,可以直接在Google Reader上对每篇文章点击那个小按钮来添加到RIL列表;

Read It Later firefox extension

另外,它的文本版本是通过RIL服务端提取的,有时候可以作为获取blogspot之类网站上文章内容的后备方法(比如 在公司没法fan墙的时候)。

参考:

2. 知识归档

2.1 以书签为知识库

浏览器书签*结合上同步的能力*,就可以用来记录知识了。你可以将一些内容按目录归类,你可以在书签里搜索。 这就是个知识库了。

相对Google Chrome浏览器,Firefox的书签有些更强的地方:

  • tag: 另一个维度的分类
  • 备注: 可以将跟你对此网址相关的的意见/想法记录在这里
  • keyword: 将此网址变成一个搜索引擎,比如你可以将 "http://www.google.com.hk/search?hl=zh-CN&source=hp&q=%s" (注意里面的%s)这个网址的关键字设定为 ghk,然后就可以在地址栏输入"ghk qemacs"来调用Google HK进行搜索了。

不过对于“知识管理”这个话题而言,Firefox的书签还有几点不爽的地方:

  • 将一个网址加入书签后,直接点击地址栏的星标,只能看见并修改名称、文件夹和标签,而对于“描述”,却看 不到也不能修改了。

    解决这个问题的办法是安装OpenBook扩展

虽然这个扩展声明的是适用于Firefox 3.0-3.6,但我在Firefox 7.0上使用也没有碰到问题,不过安装时得自 己修改xpi包里面的版本兼容声明,步骤如下:

  1. 下载xpi包文件
  2. 用zip包解压工具解压xpi文件
  3. 编辑install.rdf,把文件倒数第二行里面的em:maxVersion改为10.0什么的
  4. 重新压缩这些文件,得到更新后的xpi包
  5. 在Firefox附加组件对话框里,点击搜索框左边按钮的下拉菜单,选择“从文件安装附加组件…",选择 刚才制作的xpi包即可 (如果你用Emacs,第2-4部可以简略得多: 不用解开xpi包,直接用Emacs打开xpi文件,编辑install.rdf后保存即可)
  • 搜索时只能按照标题、URL、Tag来匹配(除了在书签管理界面进行搜索外,还可以直接在地址栏用"* foobar"来 搜索书签,或者"+ tag1 tag2"来按tag搜索,详细可参考讓 Firefox 4 Awesome Bar 網址列搜尋更有效的幾個 快捷鍵 | 電腦玩物),不能按备注来搜索;

    这个问题没有直接的解决办法——但我们可以不在备注里保存重要的内容,但同样利用Firefox的同步能力来保存 一些信息:

    • FloatNotes logoFloatNotes 这个扩展使得你可以将一个或多个便笺贴在一个网页上(也就是说跟一个网址关联起来),而且 这个便笺可以用markdown格式来写哦。这些笔记可以跟随Firefox同步(但缺省未打开,需要在其选项中设置);
      FloatNotes screenshot
    • QuickFox Notes logoQuickFox Notes 这个扩展则是一个纯粹的笔记工具了,它提供一个边栏(或者窗口/标签页)供你编辑若干笔记 (不过仅仅是纯文本)。这些笔记也可以跟随Firefox书签同步,还可以与Evernote, Google Docs, Simplenote, Dropbox or Sugarsync等多种服务进行导入导出
      QuickFox Notes screenshot

以Evernote为知识库

首先肯定得说Evernote logoEvernote Web Clipper 了,你可以用它来抓取网页内容到你的Evernote 笔记本里去。 上面说到的QuickFox Notes也支持与Evernote的导入导出。

如果你有Google Reader, Twitter等网络服务上的内容需要导入Evernote的话,还是建议采用ifttt 这样的自动服 务。这倒不在本文说的Firefox 扩展范围内了,有兴趣的可以读一下《IFTTT与Google+是什么?ifttt怎么玩? – 邓斌博客》这篇文章。

以文件为知识库

首推Scrapbook logoScrapbook 或者Scrapbook Plus 这个扩展,你可以撷取网页并添加备注。与Evernote不同的是,它还可以沿着页面里的链接进 行爬取,而且每次撷取的内容都可以很好地保持网页原貌(Evernote抓取的内容显示出来还是有点怪)。

scrapbook screenshot

抓取之后,用户还可以进行一些简单的编辑,比如用6种不同的格式刷来标记一些需要关注的地方,页面上添加多个 即时帖,用DOM橡皮擦删掉不想看见的区块(比如广告/边栏)。如果需要功能更强的编辑,你可以用Edit and Note 这个扩展或者干脆外部编辑器。

除了抓取,你也可以新建便笺,在里面记录一些内容。虽然在存储上Scrapbook Plus会把它作为一个网页看待,但 只能输入纯文本内容,这算是个缺点:-(。

由于每次抓取的内容以独立文件的形式保存,所以给很多第三方工具带来了可能性:

Footnotes:

1【创意锦囊系列之五】为什么我要的‘个人知识仓库’还不来? | 36氪。 P.S. 这篇文章是前年看见 的,但我觉得去年出现的ifttt 已经可以将这条流水线串联起来了。

Author: bamanzi

Date: 2012-05-12 12:08:34 HKT

HTML generated by org-mode 7.3 in emacs 23

本文链接



(automatically copied by ifttt from http://www.cnblogs.com/bamanzi/archive/2012/05/12/firefox-extensions-for-km.html)

2012年5月5日星期六

Emacs里一些古老的术语

这篇总结写给初学者。

虽说Emacs里面很多功能对应的命令名都是比较直白的英文描述,比如delete-non-matching-lines,比如search-forward。但有些东西你不知道怎么称呼的话,就死活也找不到怎么去调用,查文档都不知道如何下手。

Emacs里的名词 "现代编辑器"里的名词 解释
kill-ring-save copy 复制
kill cut 剪切
yank paste 粘贴
region selection 被选中的区域1
mark select 选择一段文字
fringe gutter/margin 左右边栏2
hideshow / outline code folding 3
coding system encoding 编码
truncate-lines / visual-line-mode line wrapping 换行4
font-lock syntax highlighting
imenu function list / symbol list
face style font+color+其它一些装饰
Meta key Alt key 在现在的PC上,Alt键就是Emacs所说的meta键
window panel
frame window

Footnotes:

1 Emacs缺省支持不高亮显示的选中区,mark点(上次(显式或隐式)set-mark的位置)和当前point之间自然构成 region。但transient-mark-mode(常简称tmm)打开后,就是“现代编辑器”的那种选中方式。cua-mode里面已经 包含了这个设置,而且v23.1之后版本tmm也是缺省打开的。

2 Emacs比较常用的是fringe,有左右fringe之分,left-fringe可用来显示代码折叠用的+/-号(比如 hideshowvis(效果图)和semantic-tag-folding(效果图), right-fringe可用来标识代码中的问题(比如 flymaker+rfringe(效果图)。其实Emacs里面也有margin,但很少用到,我见到的唯一例外是Emacs自带的linum-mode。

3 这并不是说 hideshow/outlne跟code folding在名词上是对应的,而是目前Emacs实现代码折叠的两种方法 而已(当然,也还有其它方法,比如semantic-tag-folding)

4 这两个也不是严格的名词对应,只是功能上的对应。如果你想要打开显示上的自动换行,应该使用的命令是 toggle-truncate-lines或者visual-line-mode(后者是按单词边际换行)。如果你想要输入达到一定列(比如80) 的时候就自动插入一个换行,应该使用的是auto-fill-mode。

本文链接



(automatically copied by ifttt from http://www.cnblogs.com/bamanzi/archive/2012/05/05/emacs-ancient-glossary.html)