John Goerzen 发布的文章

这是 Emacs 和 Org 模式系列的第五篇。

这篇博文是由 Org 模式的源文件生成的,其有几种格式:博客页面演示稿PDF 文档

1 Org 模式的输出

1.1 背景

Org 模式不仅仅只是一个议程生成程序,它也能输出许多不同的格式: LaTeX、PDF、Beamer、iCalendar(议程)、HTML、Markdown、ODT、普通文本、手册页和其它更多的复杂的格式,比如说网页文件。

这也不只是一些事后的想法,这是 Org 模式的设计核心部分并且集成的很好。

这一个文件可以同时是源代码、自动生成的输出、任务列表、文档和展示。

有些人将 Org 模式作为他们首选的标记格式,甚至对于 LaTeX 文档也是如此。Org 模式手册中的 输出一节 有更详细的介绍。

1.2 开始

对于任意的 Org 模式的文档,只要按下 C-c C-e 键,就会弹出一个让你选择多种输出格式和选项的菜单。这些选项通常是次键选择,所以很容易设置和执行。例如:要输出一个 PDF 文档,按 C-c C-e l p,要输出 HMTL 格式的, 按 C-c C-e h h

对于所有的输出选项,都有许多可用的设置;详情参见手册。事实上,使用 LaTeX 格式相当于同时使用 LaTeX 和 HTML 模式,在不同的模式中插入任意的前言和设置等。

1.3 第三方插件

ELPA 中也包含了许多额外的输出格式,详情参见 ELPA

2 Org 模式的 Beamer 演示

2.1 关于 Beamer

Beamer) 是一个生成演示稿的 LaTeX 环境. 它包括了以下特性:

  • 在演示稿中自动生成结构化的元素(例如 Marburg 主题)。 在演示稿中,这个特性可以为观众提供了视觉参考。
  • 对组织演示稿有很大的帮助。
  • 主题
  • 完全支持 LaTeX

2.2 Org 模式中 Beamer 的优点

在 Org 模式中用 Beamer 有很多好处,总的来说:

  • Org 模式很简单而且对可视化支持的很好,同时改变结构可以快速的重组你的材料。
  • 与 org-babel 绑定在一起,实时语法高亮源码和内嵌结果。
  • 语法通常更容易使用。

我已经完全用 Org 模式和 beamer 替换掉使用 LibreOffice/Powerpoint/GoogleDocs。事实上,当我必须使用其中一种工具时,这是相当令人沮丧的,因为它们在可视化表示演讲稿结构方面远远比不上 Org 模式。

2.3 标题层次

Org 模式的 Beamer 会将你文档中的部分(文中定义了标题的)转换成幻灯片。当然,问题是:哪些部分?这是由 H 输出设置org-export-headline-levels)决定的。

针对不同的人,有许多不同的方法。我比较喜欢我的演示稿这样:

#+OPTIONS: H:2
#+BEAMER_HEADER: \AtBeginSection{\frame{\sectionpage}}

这将为每个主题提供了独立部分,以突出主题的改变然后使用级别 2(两个星号)的标题来设置幻灯片。许多 Beamer 主题也有第三个间接层次,所以你可以将 H 设为 3。

2.4 主题和配置

你可以在 Org 模式的文件顶部来插入几行来配置 Beamer 和 LaTeX。在本文中,例如,你可以这样定义:

#+TITLE:  Documents and presentations with org-mode
#+AUTHOR: John Goerzen
#+BEAMER_HEADER: \institute{The Changelog}
#+PROPERTY: comments yes
#+PROPERTY: header-args :exports both :eval never-export
#+OPTIONS: H:2
#+BEAMER_THEME: CambridgeUS
#+BEAMER_COLOR_THEME: default

2.5 高级设置

我比教喜欢修改颜色、项目符号样式等。我的配置如下:

# We can't just +BEAMER_INNER_THEME: default because that picks the theme default.
# Override per https://tex.stackexchange.com/questions/11168/change-bullet-style-formatting-in-beamer
#+BEAMER_INNER_THEME: default
#+LaTeX_CLASS_OPTIONS: [aspectratio=169]
#+BEAMER_HEADER: \definecolor{links}{HTML}{0000A0}
#+BEAMER_HEADER: \hypersetup{colorlinks=,linkcolor=,urlcolor=links}
#+BEAMER_HEADER: \setbeamertemplate{itemize items}[default]
#+BEAMER_HEADER: \setbeamertemplate{enumerate items}[default]
#+BEAMER_HEADER: \setbeamertemplate{items}[default]
#+BEAMER_HEADER: \setbeamercolor*{local structure}{fg=darkred}
#+BEAMER_HEADER: \setbeamercolor{section in toc}{fg=darkred}
#+BEAMER_HEADER: \setlength{\parskip}{\smallskipamount}

在这里,aspectratio=169 将纵横比设为 16:9, 其它部分都是标准的 LaTeX/Beamer 配置。

2.6 缩小 (适应屏幕)

有时你会遇到一些非常大的代码示例,你可能更倾向与将幻灯片缩小以适应它们。

只要按下 C-c C-c pBEAMER_opt 属性设为 shrink=15\。(或者设为更大的 shrink 值)。上一张幻灯片就用到了这个。

2.7 效果

这就是最终的效果:

screenshot1

3 幻灯片之间的交互

3.1 交互式的 Emacs 幻灯片

使用 org-tree-slide 这个插件的话,就可以在 Emacs 的右侧显示幻灯片了。 只要按下 M-x,然后输入 org-tree-slide-mode,回车,然后你就可以用 C->C-< 在幻灯片之间切换了。

你可能会发现 C-c C-x C-v (即 org-toggle-inline-images)有助于使系统显示内嵌的图像。

3.2 HTML 幻灯片

有许多方式可以将 Org 模式的演讲稿导出为 HTML,并有不同级别的 JavaScript 集成。有关详细信息,请参见 Org 模式的 wiki 中的 非 beamer 演讲稿一节

4 更多

4.1 本文中的附加资源

4.2 下一个 Emacs 系列

mu4e 邮件!


via: http://changelog.complete.org/archives/9900-emacs-5-documents-and-presentations-with-org-mode

作者:John Goerzen 选题:lujun9972 译者:oneforalone 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这是 Emacs 和 Org 模式系列的第四篇。

至今为止,你已经见识到了 Org 模式的强大和高效,如果你像我一样,你可能会想:

“我真的很想让它在我所有的设备上同步。”

或者是说:

“我能在 Org 模式中转发邮件吗?”

答案当然是肯定的,因为这就是 Emacs。

同步

由于 Org 模式只使用文本文件,所以使用任意工具都可以很容易地实现同步。我使用的是 git 的 git-remote-gcrypt。由于 git-remote-gcrypt 的一些限制,每台机器都倾向于推到自己的分支,并使用命令来控制。每台机器都会先合并其它所有的分支,然后再将合并后的结果推送到主干上。cron 作业可以实现将机器上的分支推送上去,而 elisp 会协调这一切 —— 确保在同步之前保存缓冲区,在同步之后从磁盘刷新缓冲区,等等。

这篇文章的代码有点多,所以我将把它链接到 github 上,而不是写在这里。

我有一个用来存放我所有的 Org 模式的文件的目录 $HOME/org,在 ~/org 目录下有个 Makefile 文件来处理同步。该文件定义了以下目标:

  • push: 添加、提交和推送到以主机命名的分支上
  • fetch: 一个简单的 git fetch 操作
  • sync: 添加、提交和拉取远程的修改,合并,并(假设合并成功)将其推送到以主机命名的分支和主干上

现在,在我的用户 crontab 中有这个:

*/15 * * * * make -C $HOME/org push fetch 2>&1 | logger --tag 'orgsync'

与之相关的 elisp 代码 定义了一个快捷键(C-c s)来调用同步。多亏了 cronjob,只要文件被保存 —— 即使我没有在另一个机器上同步 —— 它们也会被拉取进来。

我发现这个设置非常好用。

用 Org 模式发邮件

在继续下去之前,首先要问自己一下:你真的需要它吗? 我用的是带有 mu4e 的 Org 模式,而且它集成的也很好;任何 Org 模式的任务都可以通过 Message-id 链接到电子邮件,这很理想 —— 它可以让一个人做一些事情,比如提醒他在一周内回复一条消息。

然而,Org 模式不仅仅只有提醒。它还是一个知识库、创作系统等,但是并不是我所有的邮件客户端都使用 mu4e。(注意:移动设备中有像 MobileOrg 这样的应用)。我并没有像我想的那样经常使用它,但是它有它的用途,所以我认为我也应该在这里记录它。

现在我不仅想处理纯文本电子邮件。我希望能够处理附件、HTML 邮件等。这听起来很快就有问题了 —— 但是通过使用 ripmime 和 pandoc 这样的工具,情况还不错。

第一步就是要用某些方法将获取到的邮件放入指定的文件夹下。扩展名、特殊用户等。然后我用一个 fetchmail 配置 来将它拉取下来并运行我自己的 insorgmail 脚本。

这个脚本就是处理所有有趣的部分了。它开始用 ripmime 处理消息,用 pandoc 将 HTML 的部分转换为 Org 模式的格式。 Org 模式的层次结构是用来尽可能最好地表示 email 的结构。使用 HTML 和其他工具时,email 可能会变得相当复杂,但我发现这对于我来说是可以接受的。

下一篇

我最后一篇关于 Org 模式的文章将讨论如何使用它来编写文档和准备幻灯片 —— 我发现自己对 Org 模式的使用非常满意,但这需要一些调整。


via: http://changelog.complete.org/archives/9898-emacs-4-automated-emails-to-org-mode-and-org-mode-syncing

作者:John Goerzen 译者:oneforalone 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这是 Emacs 和 Org 模式系列的第三篇。

Todo 的跟进及关键字

当你使用 Org 模式来跟进你的 TODO 时,它有多种状态。你可以用 C-c C-t 来快速切换状态。我将它设为这样:

(setq org-todo-keywords '(
  (sequence "TODO(t!)" "NEXT(n!)" "STARTED(a!)" "WAIT(w@/!)" "OTHERS(o!)" "|" "DONE(d)" "CANCELLED(c)")
))

在这里,我设置了一个任务未完成的五种状态:TODONEXTSTARTEDWAITOTHERS。每一个状态都有单个字的快捷键(tna 等)。管道符(|)之后的状态被认为是“完成”的状态。我有两个“完成”状态:DONE(已经完成)及 CANCELLED(还没完成,但由于其它的原因无法完成)。

! 的含义是记录某项更改为状态的时间。我不把这个添加到完成的状态,是因为它们已经被记录了。@ 符号表示带理由的提示,所以当切换到 WAIT 时,Org 模式会问我为什么,并将这个添加到笔记中。

以下是项目状态发生变化的例子:

** DONE This is a test
   CLOSED: [2018-03-02 Fri 03:05]
  
   - State "DONE"       from "WAIT"       [2018-03-02 Fri 03:05]
   - State "WAIT"       from "TODO"       [2018-03-02 Fri 03:05] \\
     waiting for pigs to fly
   - State "TODO"       from "NEXT"       [2018-03-02 Fri 03:05]
   - State "NEXT"       from "TODO"       [2018-03-02 Fri 03:05]

在这里,最新的项目在最上面。

议程模式,日程及期限

当你处在一个待办事项时,C-c C-sC-c C-d 可以为其设置相应的日程或期限。这些都是在议程模式中的功能。它们的区别在于其意图和表现。日程是你希望在某个时候完成的事情,而期限是在某个特定的时间应该完成的事情。默认情况下,议程视图将在项目的截止日期前提醒你。

在此过程中,议程视图将显示即将出现的项目,提供了一种基于纯文本或标记搜索项目的方法,甚至可以进行跨多个文件处理项目的批量操作。我在本系列的第 2 部分中介绍了为议程模式配置。

标签

Org 模式当然也支持标签了。你可以通过 C-c C-q 快速的建立标签。

你可能会想为一些常用的标签设置快捷键。就像这样:

  (setq org-tag-persistent-alist 
        '(("@phone" . ?p) 
          ("@computer" . ?c) 
          ("@websurfing" . ?w)
          ("@errands" . ?e)
          ("@outdoors" . ?o)
          ("MIT" . ?m)
          ("BIGROCK" . ?b)
          ("CONTACTS" . ?C)
          ("INBOX" . ?i)
          ))

你还可以按文件向该列表添加标记,也可以按文件为某些内容设置标记。我就在我的 inbox.orgemail.org 文件中设置了一个 INBOX 的标签。然后我可以每天从日程视图中查看所有标记为 INBOX 的项目,像将它们重新归档到其他文件中的这样的简单操作将让它们去掉 INBOX 标记。

重新归档

“重新归档”就是在文件中或其他地方移动。它是使用标题来完成的。C-c C-w 就是做这个的。我设置成这样:

(setq org-outline-path-complete-in-steps nil)         ; Refile in a single go
(setq org-refile-use-outline-path 'file)

归档分类

一段时间后,你的文件就会被已经完成的事情弄得乱七八糟。Org 模式有一个归档特性,可以将主 .org 文件移到其他文件中,以备将来参考。如果你在 git 或其他软件中 有 Org 文件,你可能希望删除这些其他文件,因为无论如何都会在历史中拥有这些文件,但是我发现它们对于析取和搜索非常方便。

我会定期检查并归档文件中的所有内容。基于 stackoverflow 的讨论,我有以下代码:

(defun org-archive-done-tasks ()
  (interactive)
  (org-map-entries
   (lambda ()
     (org-archive-subtree)
     (setq org-map-continue-from (outline-previous-heading)))
   "/DONE" 'file)
  (org-map-entries
   (lambda ()
     (org-archive-subtree)
     (setq org-map-continue-from (outline-previous-heading)))
   "/CANCELLED" 'file)
)

这基于一个特定的答案 —— 你可以从评论那获得一些额外的提示。现在你可以运行 M-x org-archive-done-tasks,当前文件中所有标记为 DONECANCELED 的内容都将放到另一个文件中。

下一篇

我将通过讨论在 Org 模式中自动接受邮件以及在不同的机器上同步来对 Org 模式进行总结。


via: https://changelog.complete.org/archives/9877-emacs-3-more-on-org-mode

作者:John Goerzen 选题:lujun9972 译者:oneforalone 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在我 Emacs 系列中的第一篇文章里,我介绍了我在用了几十年的 vim 后转向了 Emacs,Org 模式就是我为什么这样做的原因。

Org 模式的精简和高效真的震惊了我,它真的是个“杀手”应用。

所以,Org 模式到底是什么呢?

这是我昨天写的:

它是一个组织信息的平台,它的主页上这样写着:“一切都是纯文本:Org 模式用于记笔记、维护待办事项列表、计划项目和使用快速有效的纯文本系统编写文档。”

这是事实,但并不是很准确。Org 模式是一个你用来组织事务的小工具。它有一些非常合理的默认设置,但也允许你自己定制。

主要突出在这几件事上:

  • 维护待办事项列表:项目可以分散在 Org 文件中,包含附件,有标签、截止日期、时间表。有一个方便的“日程”视图,显示需要做什么。项目也可以重复。
  • 编写文档:Org 模式有个特殊的功能来生成 HTML、LaTeX、幻灯片(用 LaTeX beamer)和其他所有的格式。它也支持直接在缓冲区中运行和以 Emacs 所支持的的语言进行 文学编程 literate programming 。如果你想要深入了解这项功能的话,参阅这篇文学式 DevOps 的文章。而 整个 Worg 网站 是用 Org 模式开发的。
  • 记笔记:对,它也能做笔记。通过全文搜索,文件的交叉引用(类似 wiki),UUID,甚至可以与其他的系统进行交互(通过 Message-ID 与 mu4e 交互,通过 ERC 的日志等等……)。

入门

我强烈建议去阅读 Carsten Dominik 关于 Org 模式的一篇很棒的 Google 讲话。那篇文章真的很赞。

在 Emacs 中带有 Org 模式,但如果你想要个比较新的版本的话,Debian 用户可以使用命令 apt-get install org-mode 来更新,或者使用 Emacs 的包管理系统命令 M-x package-install RET org-mode RET

现在,你可能需要阅读一下 Org 模式的精简版教程中的导读部分,特别注意,你要设置下启动部分中提到的那些键的绑定。

一份好的教程

我会给出一些好的教程和介绍的链接,但这篇文章不会是一篇教程。特别是在本文末尾,有两个很不错的视频链接。

我的一些配置

我将在这里记录下一些我的配置并介绍它的作用。你没有必要每行每句将它拷贝到你的配置中 —— 这只是一个参考,告诉你哪些可以配置,要怎么在手册中查找,或许只是一个“我现在该怎么做”的参考。

首先,我将 Emacs 的编码默认设置为 UTF-8。

(prefer-coding-system 'utf-8) 
(set-language-environment "UTF-8")

Org 模式中可以打开 URL。默认的,它会在 Firefox 中打开,但我喜欢用 Chromium。

(setq browse-url-browser-function 'browse-url-chromium)

我把基本的键的绑定和设为教程里的一样,再加上 M-RET 的操作的配置。

(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-ca" 'org-agenda)
(global-set-key "\C-cc" 'org-capture)
(global-set-key "\C-cb" 'org-iswitchb)

(setq org-M-RET-may-split-line nil)

捕获配置

我可以在 Emacs 的任何模式中按 C-c c,按下后它就会帮我捕获某些事,其中包括一个指向我正在处理事务的链接。

你可以通过定义捕获模板来配置它。我将保存两个日志文件,作为会议、电话等的通用记录。一个是私人用的,一个是办公用的。如果我按下 C-c c j,它就会帮我捕获为私人项. 下面包含 %a 的配置是表示我当前的位置(或是我使用 C-c l 保存的链接)的链接。

(setq org-default-notes-file "~/org/tasks.org")
(setq org-capture-templates
      '(
        ("t" "Todo" entry (file+headline "inbox.org" "Tasks")
         "* TODO %?\n  %i\n  %u\n  %a")
        ("n" "Note/Data" entry (file+headline "inbox.org" "Notes/Data")
         "* %?   \n  %i\n  %u\n  %a")
        ("j" "Journal" entry (file+datetree "~/org/journal.org")
         "* %?\nEntered on %U\n %i\n %a")
        ("J" "Work-Journal" entry (file+datetree "~/org/wjournal.org")
         "* %?\nEntered on %U\n %i\n %a")
        ))
(setq org-irc-link-to-logs t)

我喜欢通过 UUID 来建立链接,这让我在文件之间移动而不会破坏位置。当我要 Org 存储一个链接目标以便将来插入时,以下配置有助于生成 UUID。

(require 'org-id)
(setq org-id-link-to-org-use-id 'create-if-interactive)

议程配置

我喜欢将星期天作为一周的开始,当我将某件事标记为完成时,我也喜欢记下时间。

(setq org-log-done 'time)
(setq org-agenda-start-on-weekday 0)

文件归档配置

在这我将配置它,让它知道在议程中该使用哪些文件,而且在纯文本的搜索中添加一点点小功能。我喜欢保留一个通用的文件夹(我可以从其中移动或“重新归档”内容),然后将个人和工作项的任务、日志和知识库分开。

  (setq org-agenda-files (list "~/org/inbox.org"
                               "~/org/email.org"
                               "~/org/tasks.org"
                               "~/org/wtasks.org"
                               "~/org/journal.org"
                               "~/org/wjournal.org"
                               "~/org/kb.org"
                               "~/org/wkb.org"
  ))
  (setq org-agenda-text-search-extra-files
        (list "~/org/someday.org"
              "~/org/config.org"
  ))

  (setq org-refile-targets '((nil :maxlevel . 2)
                             (org-agenda-files :maxlevel . 2)
                             ("~/org/someday.org" :maxlevel . 2)
                             ("~/org/templates.org" :maxlevel . 2)
                             )
        )
(setq org-outline-path-complete-in-steps nil)         ; Refile in a single go
(setq org-refile-use-outline-path 'file)

外观配置

我喜欢一个较漂亮的的屏幕。在你开始习惯 Org 模式之后,你可以试试这个。

(add-hook 'org-mode-hook
          (lambda ()
            (org-bullets-mode t)))
(setq org-ellipsis "⤵")

下一篇

希望这篇文章展示了 Org 模式的一些功能。接下来,我将介绍如何定制 TODO 关键字和标记、归档旧任务、将电子邮件转发到 Org 模式,以及如何使用 git 在不同电脑之间进行同步。

你也可以查看本系列的所有文章列表


via: https://changelog.complete.org/archives/9865-emacs-2-introducing-org-mode

作者:John Goerzen 选题:lujun9972 译者:oneforalone 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我必须承认,在使用了几十年的 vim 后, 我被 Emacs 吸引了。

长期以来,我一直对如何组织安排事情感到沮丧。我也有用过 GTDZTD 之类的方法,但是像邮件或是大型文件这样的事务真的很难来组织安排。

我一直在用 Asana 处理任务,用 Evernote 做笔记,用 Thunderbird 处理邮件,把 ikiwiki 和其他的一些项目组合作为个人知识库,而且还在电脑的归档了各种文件。当我的新工作需要将 Slack 也加入进来时,我终于忍无可忍了。

许多 TODO 管理工具与电子邮件集成的很差。当你想做“提醒我在一周内回复这个邮件”之类的事时,很多时候是不可能的,因为这个工具不能以一种能够轻松回复的方式存储邮件。而这个问题在 Slack 上更为严重。

就在那时,我偶然发现了 Carsten Dominik 在 Google Talk 上关于 Org 模式的讲话。Carsten 是 Org 模式的作者,即便是这个讲话已经有 10 年了,但它仍然很具有参考价值。

我之前有用过 Org 模式,但是每次我都没有真正的深入研究它, 因为我当时的反应是“一个大纲编辑器?但我需要的是待办事项列表”。我就这么错过了它。但实际上 Org 模式就是我所需要的。

什么是 Emacs?什么是 Org 模式?

Emacs 最初是一个文本编辑器,现在依然是一个文本编辑器,而且这种传统无疑贯穿始终。但是说 Emacs 是个编辑器是很不公平的。

Emacs 更像一个平台或是工具包。你不仅可以用它来编辑源代码,而且配置 Emacs 本身也是编程,里面有很多模式。就像编写一个 Firefox 插件一样简单,只要几行代码,然后,模式里的操作就改变了。

Org 模式也一样。确实,它是一个大纲编辑器,但它真正所包含的不止如此。它是一个信息组织平台。它的网站上写着,“你可以用纯文本来记录你的生活:你可以用 Org 模式来记笔记,处理待办事项,规划项目和使用快速有效的纯文本系统编写文档。”

捕获

如果你读过基于 GTD 的生产力指南,那么他们强调的一件事就是毫不费力地获取项目。这个想法是,当某件事突然出现在你的脑海里时,把它迅速输入一个受信任的系统,这样你就可以继续做你正在做的事情。Org 模式有一个专门的捕获系统。我可以在 Emacs 的任何地方按下 C-c c 键,它就会空出一个位置来记录我的笔记。最关键的是,自动嵌入到笔记中的链接可以链接到我按下 C-c c 键时正在编辑的那一行。如果我正在编辑文件,它会链回到那个文件和我所在的行。如果我正在浏览邮件,它就会链回到那封邮件(通过邮件的 Message-Id,这样它就可以在任何一个文件夹中找到邮件)。聊天时也一样,甚至是当你在另一个 Org 模式中也可也这样。

这样我就可以做一个笔记,它会提醒我在一周内回复某封邮件,当我点击这个笔记中的链接时,它会在我的邮件阅读器中弹出这封邮件 —— 即使我随后将它从收件箱中存档。

没错,这正是我要找的!

工具套件

一旦你开始使用 Org 模式,很快你就会想将所有的事情都集成到里面。有可以从网络上捕获内容的浏览器插件,也有多个 Emacs 邮件或新闻阅读器与之集成,ERC(IRC 客户端)也不错。所以我将自己从 Thunderbird 和 mairix + mutt (用于邮件归档)换到了 mu4e,从 xchat + slack 换到了 ERC。

你可能不明白,我喜欢这些基于 Emacs 的工具,而不是具有相同功能的单独的工具。

一个小花絮:我又在使用离线 IMAP 了!我甚至在很久以前就用过 GNUS。

用一个 Emacs 进程来管理

我以前也经常使用 Emacs,那时,Emacs 是一个“大”的程序(现在显示电源状态的小程序占用的内存要比 Emacs 多)。当时存在在启动时间过长的问题,但是现在已经有连接到一个正在运行的 Emacs 进程的解决方法。

我喜欢用 Mod-p(一个 xmonad) 中 dzen 菜单栏的快捷方式,但是在大多数传统的桌面环境中该功能的快捷键是 Alt-F2)来启动程序(LCTT 译注:xmonad 是一种平铺桌面;dzen 是 X11 窗口下管理消息、提醒和菜单的程序)。这个设置在不运行多个 emacs 们 emacsen 时很方便,因为这样就不会在试图捕获另一个打开的文件时出问题。这中方法很简单:创建一个叫 em 的脚本并将它放到我自己的环境变量中。就像这样:

#!/bin/bash exec emacsclient -c -a "" "$@"

如果没有 emacs 进程存在的话,就会创建一个新的 emacs 进程,否则的话就直接使用已存在的进程。这样做还有一个好处:-nw 之类的参数工作的很好,它实际上就像在 shell 提示符下输入 emacs 一样。它很适合用于设置 EDITOR 环境变量。

下一篇

接下来我将讨论我的使用情况,并展示以下的配置:

  • Org 模式,包括计算机之间的同步、捕获、日程和待办事项、文件、链接、关键字和标记、各种导出(幻灯片)等。
  • mu4e,用于电子邮件,包括多个账户,bbdb 集成
  • ERC,用于 IRC 和即时通讯

via: http://changelog.complete.org/archives/9861-emacs-1-ditching-a-bunch-of-stuff-and-moving-to-emacs-and-org-mode

作者:John Goerzen 译者:oneforalone 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

不久前,我写了一篇我的 Debian Docker 基本映像。我决定进一步扩展这个概念:在 Docker 中运行 DOS 程序。

但首先,来看看题图。

事实证明这是可能的,但很难。我使用了所有三种主要的 DOS 模拟器(dosbox、qemu 和 dosemu)。我让它们都能在 Docker 容器中运行,但有很多有趣的问题需要解决。

都要做的事是在 DOS 环境下提供一个伪造的调制解调器。它需要作为 TCP 端口暴露在容器外部。有很多方法可以做到 —— 我使用的是 tcpser。dosbox 有一个 TCP 调制解调器接口,但事实证明,这样做太问题太多了。

挑战来自你希望能够一次接受多个传入 telnet(或 TCP)连接。DOS 不是一个多任务操作系统,所以当时有很多黑客式的方法。一种是有多台物理机,每个有一根传入电话线。或者它们可能会在 DESQview、OS/2 甚至 Windows 3.1 等多任务层下运行多个伪 DOS 实例。

(注意:我刚刚了解到 DESQview/X,它将 DESQview 与 X11R5 集成在一起,并取代了 Windows 3 驱动程序来把 Windows 作为 X 应用程序运行。)

出于各种原因,我不想尝试在 Docker 中运行其中任何一个系统。这让我模拟了原来的多物理节点设置。从理论上讲,非常简单 —— 运行一组 DOS 实例,每个实例最多使用 1MB 的模拟 RAM,这就行了。但是这里面临挑战。

在多物理节点设置中,你需要某种文件共享,因为你的节点需要访问共享的消息和文件存储。在老式的 DOS 时代,有很多笨重的方法可以做到这一点 —— NetwareLAN manager,甚至一些 PC NFS 客户端。我没有访问 Netware。我尝试了 DOS 中的 Microsoft LM 客户端,与在 Docker 容器内运行的 Samba 服务器交互。这样可以使用,但 LM 客户端即使有各种高内存技巧还是占用了很多内存,BBS 软件也无法运行。我无法在多个 dosbox 实例中挂载底层文件系统,因为 dosbox 缓存不兼容。

这就是为什么我使用 dosemu 的原因。除了有比 dosbox 更完整的模拟器之外,它还有一种共享主机文件系统的方式。

所以,所有这一切都在此:jgoerzen/docker-bbs-renegade

我还为其他想做类似事情的人准备了构建块:docker-dos-bbs 和底层 docker-dosemu

意外的收获是,我也试图了在 Joyent 的 Triton(基于 Solaris 的 SmartOS)下运行它。让我感到高兴的印象是,几乎可以在这下面工作。是的,在 Solaris 机器上的一个基于 Linux 的 DOS 模拟器的容器中运行 Renegade DOS BBS。


via: http://changelog.complete.org/archives/9836-an-old-dos-bbs-in-a-docker-container

作者:John Goerzen 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出