我在 Emacs 中使用 Org-mode 来处理我所有的技术文档。我想使用 Emacs 来准备 Stack Overflow 的问题。有没有一个 Emacs 模式,或者更好的是,一个 Org-mode 的扩展来处理 Stack Overflow 格式?理想情况下,它应该包括 Stack Overflow 问题/评论缓冲区中使用的 markdown 语法支持的所有格式选项。
5 回答
将 Emacs 与堆栈溢出集成
如前所述,您可以使用markdown-mode。要将 markdown-mode 与 Stack Overflow 集成,您可以使用 Firefox 插件It's All Text,它允许您使用外部编辑器编辑文本区域。以下是如何设置它:
安装降价模式。如果您使用 Debian 或 Ubuntu,您可以通过发出
sudo apt-get install emacs-goodies-el
或者,如果您使用的是 emacs 24(或在 emacs 23 上有package.el )和Marmalade或Melpa,您可以使用
M-x package-install RET markdown-mode
- 将 It's All Text 的首选项设置为使用 Emacs。您可以将其设置为可执行文件(例如 /usr/bin/emacs)或emacsclient。
将以下内容添加到您的 .emacs 以启用 Stack Overflow 和 Stack Exchange 文本区域的降价模式:
;; Integrate Emacs with Stack Exchange https://stackoverflow.com/a/10386560/789593 (add-to-list 'auto-mode-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+\\.txt" . markdown-mode))
或者,如果
as-external-alist
已定义——如果M-x describe-variable RET as-external-alist
没有失败——它可能会覆盖你的auto-mode-alist
. 它的格式略有不同(它是对列表而不是 cons 单元格列表),因此可以使用:(add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+\\.txt" markdown-mode))
按 textarea 右下方的蓝色编辑按钮以通过 emacs 对其进行编辑。蓝色的编辑按钮显示在以下屏幕截图中:
在下面的屏幕截图中是一个在 Markdown 模式下编辑这篇文章的 Emacs 缓冲区:
在 Emacs 中完成编辑后,保存缓冲区以将其发送到 Firefox。
如果您希望其他域具有此功能,则需要更改上面的正则表达式。以下识别 Stack Exchange、Stack Overflow、Ask Ubuntu 和超级用户:
;; Integrate Emacs with Stack Exchange https://stackoverflow.com/a/10386560/789593
(add-to-list 'auto-mode-alist '("\\(stack\\(exchange\\|overflow\\)\\|superuser\\|askubuntu\\)\\.com\\.[a-z0-9]+\\.txt" . markdown-mode))
在 Org-mode 中使用 markdown-mode
要将 markdow-mode 与 Org-mode 一起使用,您可以使用其功能来处理源代码。有了它,您可以在 Org-mode 缓冲区中包含 markdown 块,您可以通过 markdown-mode 对其进行编辑。您可以按如下方式使用它:
在 Org 模式缓冲区中输入
<s
换行符并按Tab。这将导致#+begin_src #+end_src
输入
markdown
之后#+begin_src
,这样你就有了#+begin_src markdown #+end_src
在源块内(在
#+begin_src markdown
和之间#+end_src
)按下C-c '以使用降价模式编辑源块。在降价模式下编辑源代码块。
按C-c '返回 Org 模式缓冲区并插入编辑。这可能类似于以下屏幕截图所示:
有降价模式: http: //jblevins.org/projects/markdown-mode/
有关一些自定义,请参阅http://emacswiki.org/emacs/MarkdownMode。
这里有一个用于新导出引擎的降价后端:http: //orgmode.org/w/ ?p=org-mode.git;a=blob_plain;f=contrib/lisp/org-md.el;hb=头
确保将contrib/lisp/
目录添加到您的load-path
.
然后(require 'org-export)
和(require 'org-md)
。
M-x org-md-export-to-markdown RET
将导出到降价。
@NN 的答案也适用于 Chrome,这些更改在细节上有所变化。
Chrome 有Edit with Emacs扩展,类似于 It's all text。安装后,您将在扩展选项页面中找到更多说明。
有一个edit-server
带有选项的 emacs 自定义组,最重要的是,每个站点的主要模式更改的配置与@NN 的答案不同:
(add-to-list 'edit-server-url-major-mode-alist
'("^stackoverflow" . markdown-mode))
此外,为了使编辑服务器在终端 emacs 中工作,我必须禁用该edit-server-new-frame
选项。
Pandoc支持读取 org-mode 的子集,并且可以输出 markdown。
也就是说,你可以继续用org-mode写,包括写斜体/like this/,然后导出到markdown。在 emacs 中,您可以通过选择区域、点击 Cu MS-\ 并输入 pandoc -r org -t markdown 来转换为 markdown,得到如下输出:
In other words, you can keep writing in org-mode, including writing italics *like this*, and then export to markdown.
或者,您可以保存文件并在命令行中进行转换。
使用 Chrome 也很容易
与使用 Emacs chrome 插件编辑和配置为 对 Stackoverflow(以及我使用的其他 Stackexchange 站点) 使用markdown-mode的 Emacs Edit Server对我的解决方案进行测试相比,这不是一个答案 。安装扩展程序和MELPA软件包后我所要做的一切都已设置
(setq edit-server-url-major-mode-alist
'(("mail.google.com" . org-mode)
("stackoverflow\\.com" . markdown-mode)
(".*\\.stackexchange\\.com" . markdown-mode)
("github\\.com" . markdown-mode)))
Gmail 邮件支持
请注意,在上述设置中,我将org-mode用于 gmail 消息。仍然需要在这里做一些工作,但可以通过一点努力,使用 org-mode 起草您的 gmail 消息,然后使用org-mime从您的 org 结构化文本生成 html。您可以只使用降价和降价到 html 的转换。