热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《orgremember》翻译

Chapter9:Capture-Refile-Archive76快速捕获新想法和任务,并且将相关材料与之相链接的能力是任何一个组织管理系统中非常重要的部分.Org使用remembe

 Chapter 9: Capture - Refile - Archive 76

快速捕获新想法和任务,并且将相关材料与之相链接的能力是任何一个组织管理系统中非常重要的部分.Org使用'remember.el'包来创建任务并且存储相关文件到一个特定目录中.一旦要在组织系统中移动任务和项目,只需要把整个项目树结构打包即可,方便而快速

1 Remember

Remeber包是由John Wielgley编写的,它可以使你在不怎么打断工作流的情况下快速记录.这是一个很棒的途径来新增短笺和任务到Org文件中去.remember.el包被集成到Emacs23中了,而在Emacs22则没有集成.详细信息可以参见http://www.emacswiki.org/cgi-bin/wiki/RememberMode

Org极大地扩展了Remember的可用性:你可以根据不同的记录类型定义不同的模板,将不同模板的内容存放在配置好的文件和标题下.当然,你也可以交互地选择把记录放在哪个位置上.

1.1 为Org配置Remember
下面的客户化代码告诉Remember将Org文件作为目标文件,在创建注释时采用兼容Org链接的格式.

  1. (org-remember-insinuate) 
  2. (setq org-directory "~/path/to/my/orgfiles/"
  3. (setq org-default-notes-file (concat org-directory "/notes.org")) 
  4. (define-key global-map "\C-cr" ’org-remember) 

最后一行将org-remember命令绑定到全局key序列Ctrl+c r上.org-remember命令本质上的工作就是调用Remember,不过它也会自动做一些事情,比如:如果我们标识了一块文本块,你可以让它自动拷贝这块块文本块到Remember的缓冲区中. 它也允许你在在缓冲区中打开remember记录将要被保存在的目标文件并跳转到指定标题的位置:你只需要在调用org-remember时加上一个前缀参数即刻.如果你使用了两个前缀参数,Org会跳转到最后哪个Remember记录被保存的地方.

Remember缓冲区实际上使用org-mode作为它的major mode,因此它支持所有org-mode的编辑特征.在此基础上,一个名为org-remember-mode的minor mode被激活,这个minor mode的目的只有一个,那就是使用org-remember-mode-map中定义的keymap来覆盖Org-mode中原有的一些键绑定设置.

你也可以从agenda视图中调用org-remember,方法是按下k r键组合.通过这种方式调用org-remember时,若再模板中定义了插入时间戳,那么默认会填入agenda中光标所在的日期,而不是现实的日期.

1.2 Remember 模板

为了与Org整合,你可用使用模板来产生不同类型的Remember记录.例如,如果你想使用一个模板来建立标准的TODO条款,而用另一个模板来建立日志条款,使用第三个模板来收集随机产生的想法.你可用这样配置:

  1. (setq org-remember-templates 
  2. ’(("Todo" ?t "* TODO %?\n %i\n %a" "~/org/TODO.org" "Tasks"
  3. ("Journal" ?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org"
  4. ("Idea" ?i "* %^{Title}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas"))) 

这里面,第一个字符串只是一个名字,接下来用一个字符指定了如何选择模板.一般来说,通常这个字符会是名字的第一个字符.再下一个字符串定义了模板的内容.再接下来是两个可选字符串,给出了新增加的记录应该放在哪个文件的哪个标题下. 如果没有指定文件名或者文件名为nil的情况下,该文件默认为org-default-notes-file值中所定义的文件名, 如果没有指定标题名称,则标题默认为org-remember-default-headline中所定义的值. 如果文件名不是绝对路径,那么它的路径是相对于org-directory来定的.

标题这一项也可以为符号top或者bottom,这代表把记录作为第一层,放到文件的开头(top)或者文件的结尾(bottom).标题也可以为值date-tree,这样的话org文件中会自动建立一个年为第一层,月份为第二层,天位第三层的树,而新增的记录就会根据当前的日期,填入树中.

第六个元素是一个可选项,它界定了在哪些情景下我们才可以选择这个模板.这个元素可以是一个major mode的列表或function. org-remember首先会检查这个function是否返回t,或者我们是否处于major mode列表中所列的某个major mode中,然后将不满足条件的模板排除掉.若模板中这一项没有定义或者这一项的值为nil或t,那么该模板总是可以选择的.

下面是一个例子:

  1. (setq org-remember-templates 
  2.   (("Bug" ?b "* BUG %?\n %i\n %a" "~/org/BUGS.org" "Bugs" (emacs-lisp-mode)) 
  3.    ("Journal" ?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org" "X" my-check
  4.    ("Idea" ?i "* %^{Title}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas"))) 

第一个模板之后当org-remember是从emacs-lisp-mode的缓冲区中被调用时才是可用的.第二个模板只有当函数my-check返回值为t时才可用.第三个模板在任何情景下都是可用的.

当你执行M-x org-remember (or M-x remember) 来调用remember记录事情的时候, Org会提示输入一个键来选择模板(如果你定义了超过一个模板的话),然后,缓冲区就会显示为类似下面这样

* TODO
[[file:link to where you called remember]]

当模板被扩展时,特定的%开头字符会自动插入相应的内容:

* %^{提示语句}
把提示语句提示给用户,并插入用户的输入.
你可以定义默认值和可选列表,语法为:{提示语句|默认值|可选值1|可选值2...}.
可用用方向键来获取输入的历史
* %a
注释,一般来说会根据org-store-link定义的值来创建这条链接
* %A
类似于%a, 但是会提示输入链接的描述部分
* %i
若remember被调用时用了C-u前缀,则会插入region的内容.
文本的缩进不变.
* %t
插入时间戳,但是只插入日期
* %T
插入时间戳,包括日期和时间
* %u, %U
类似于%t和%T,但是不会让你有选择时间戳的机会
* %^t
类似%t, 但是会提示输入时间.%^T, %^u, %^U也类似.你也可用自定义一个提示信息,语法为%^{提示信息}t
* %n
插入用户名(从变量user-full-name中获得)
* %c
插入当前kill ring最开头部分的内容.
* %x
插入X系统粘贴板的内容
* %^C
提供交互功能让用户选择插入那个kill 或 clip 的内容.
* %^L
类似于%^C, 但是以链接的方式插入.
* %k
插入当前计时任务的标题
* %K
链接到当钱计时任务
* %^g
提示输入tag,能够自动补完目标文件中定义的tag
* %^G
提示输入tag,能够自动补完所有agenda文件中的所有tag
* %^{prop}p
提示用户输入属性prop的值
* %:指定类型的关键字
指定信息为特定的链接类型.可选的关键字在后面有列出.
* %[file]
插入file的内容
* %(elisp表达式)
计算elisp表达式,并插入计算结果
* %!
补完template后,理解保存记录
(通常情况下需要按C-c C-c来触发保存动作,但是这里跳过这一步了)
* %&
保存记录之后,立即跳转到保存的地址
* %?
在完成模板替换之后,鼠标放置在这个位置

可选值的链接类型关键字为:

Link type | Available keywords
-------------------+----------------------------------------------
bbdb | %:name %:company
bbdb | %::server %:port %:nick
vm, wl, mh, rmail | %:type %:subject %:message-id
| %:from %:fromname %:fromaddress
| %:to %:toname %:toaddress
| %:fromto (either "to NAME" or "from NAME")5
gnus | %:group, for messages also all email fields
w3, w3m | %:url
info | %:file %:node
calendar | %:date"

如果你改变主意想换另一个模板,可以在remember缓冲区中调用org-remember.然后你可以选择新的模板,而以前的信息会自动填充入这个新的模板

1.3 储存Remember记录

当你用Remember完成了一笔记录的输入,你需要按C-c C-c来保存这条记录. 如果你再Remember缓冲区中已经打开了计时,那么你首先会被询问是否想要关掉计时.如果你选择 n,那么在记录保存后,依然在计时.

Remember会把新增的记录添加到指定的文件中指定的标题下.如果在定义模板时没有指定文件和标题,那么会使用默认的文件和标题. 随后Remember被关闭,窗口回到调用Remember之前的情景中. To re-use the location found during the last call to Remember, 使用C-0 C-c C-c退出Remember缓冲区. 使用C-2 C-c C-c退出则会将记录作为当前计时项目的子节点. C-3 C-c C-c退出则会将记录作为当前计时项目的兄弟节点.

如果你想把记录直接保存到另一个地方,使用C-1 C-c C-c而不要退出Remember. Remember首先会提示你输入目标文件-如果你直接按RET,那么默认为模板中定义的文件. 然后命令提供了目标文件中的标题树,这时光标放在模板中定义的标题上(如果在模板中定义了标题的话).你可以立刻按RET来把记录存放在此处,也可以通过下面的按键来选择另一个不同的位置来存放.

TAB Cycle visibility.
/ Next/previous visible headline.
n / p Next/previous visible headline.
f / b Next/previous headline same level.
u One level up.

按下RET或者,会产生如下效果

Cursor position Key Note gets inserted
on headline RET as sublevel of the heading at cursor, first or last depending on org-reverse-note-order.
left / right as same level, before/after current heading
buffer-start RET as level 2 heading at end of file or level 1 at beginning depending on org-reverse-note-order.
not on headline RET at cursor position, level taken from context.

在插入文本到树之前,程序保证插入的文本会有一个标题,也即是说,第一行会以* 开头. 如果第一行不是以* 开头的话,那么会根据当前日期自动生成一个标题. 如果你在Remember标题下把文本的缩进都调好了, 而文本在插入树时却发现不是放在第一层,Remember会自动帮你把记录降级以适应所需要的缩进.



Date: 2013-04-18 21:47:36 中国标准时间
Author:
Org version 7.8.11 with Emacs version 24
Validate XHTML 1.0

 


推荐阅读
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
author-avatar
手机用户2502855257
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有