我在Emacs中使用Org-mode来处理所有的技术文档。我想使用Emacs准备我在Stack Overflow上提出的问题。是否有一个Emacs模式,甚至更好的是一个扩展程序,可以处理Stack Overflow格式的Org-mode?理想情况下,它应该包括所有格式选项,支持在Stack Overflow问题/评论缓冲区中使用的markdown语法。
如前所述,您可以使用markdown-mode。要将markdown-mode与Stack Overflow集成,您可以使用Firefox插件It's All Text,该插件允许您使用外部编辑器编辑文本区域。以下是设置方法:
安装markdown-mode。如果您使用Debian或Ubuntu,则可以通过下面的命令进行安装:
sudo apt-get install emacs-goodies-el
如果你使用的是emacs24 (或者在emacs23上安装了package.el),并且有Marmalade 或 Melpa,那么你可以使用以下命令进行安装:
M-x package-install RET markdown-mode
将以下内容添加到你的.emacs文件中,以启用markdown-mode来编辑Stack Overflow和Stack Exchange文本区域:
;; Integrate Emacs with Stack Exchange https://dev59.com/2mkv5IYBdhLWcg3wvDTq#10386560
(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))
按下文本区域右下方的蓝色编辑按钮,即可通过emacs编辑它。如下截图所示,“蓝色编辑”按钮:
下面这张截图显示了一个Markdown模式的Emacs缓冲区正在编辑这篇帖子:
在Emacs中完成编辑后,请保存缓冲区以将其发送到Firefox。
如果您想为其他领域添加此功能,则需要更改上面的正则表达式。以下内容可识别Stack Exchange、Stack Overflow、Ask Ubuntu和Super User:
;; Integrate Emacs with Stack Exchange https://dev59.com/2mkv5IYBdhLWcg3wvDTq#10386560
(add-to-list 'auto-mode-alist '("\\(stack\\(exchange\\|overflow\\)\\|superuser\\|askubuntu\\)\\.com\\.[a-z0-9]+\\.txt" . markdown-mode))
你可以通过使用Org-mode的特性处理源代码来在Org-mode中使用markdown-mode。这样,你就可以将Markdown块包含在Org-mode缓冲区中,并通过markdown-mode进行编辑。你可以按照以下步骤操作:
在Org-mode缓冲区中输入<s
然后换行并按下 Tab。这将产生:
#+begin_src
#+end_src
在#+begin_src
后输入 markdown
,这将使得语法高亮生效:
#+begin_src markdown
#+end_src
在源代码块内(位于#+begin_src markdown
和#+end_src
之间),按下C-c '使用markdown-mode编辑源代码块。
在markdown-mode中编辑源代码块。
按下C-c '返回到Org-mode缓冲区并插入编辑内容。这可能看起来像以下截图所示:
as-external
(或安装了nxhtml-mode
,该模式会安装as-external
),它可能会完全忽略您对auto-mode-alist
的调整。您想要修改的变量是as-external-alist
。 - quodlibetoras-external-alist
吗? - N.N.(add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+" markdown-mode))
- quodlibetor#+begin_src python
的 markdown 块中使用 `python``` 吗? - alper有一个 markdown-mode: http://jblevins.org/projects/markdown-mode/
详情请参阅http://emacswiki.org/emacs/MarkdownMode
此外,新导出引擎还有用于 markdown 的后端: http://orgmode.org/w/?p=org-mode.git;a=blob_plain;f=contrib/lisp/org-md.el;hb=HEAD
确保你将contrib/lisp/
目录添加到load-path
中。
然后输入(require 'org-export)
和(require 'org-md)
。
M-x org-md-export-to-markdown RET
将会导出为 markdown 格式。
@N.N的答案也适用于Chrome,只需进行以下详细更改。
Chrome有一个名为Edit with Emacs的扩展程序,类似于It's all text。安装后,您将在扩展选项页面中找到进一步的说明。
有一个Emacs自定义组edit-server
,其中包含各种选项,最重要的是每个站点的主要模式更改已配置不同于@N.N的答案:
(add-to-list 'edit-server-url-major-mode-alist
'("^stackoverflow" . markdown-mode))
Pandoc支持读取部分org-mode内容,并能输出markdown。
换句话说,您可以继续使用org-mode进行编写,包括编写斜体/像这样/,然后导出为markdown格式。 从emacs中,您可以通过选择区域,按C-u M-S-\并输入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.
或者,您可以保存文件并在命令行中进行转换。
这不仅是一个答案,更是我使用Emacs编辑器 Chrome插件和配置了Edit Server的Emacs编辑器markdown-mode来解决Stackoverflow(以及其他我使用的Stackexchange网站)问题的测试。在安装扩展和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)))
请注意,在上述设置中,我正在使用org-mode来处理Gmail消息。仍需要进行一些工作,但只要稍加努力,就可以使用org-mime从您的org结构化文本生成HTML,并起草您的Gmail消息。您也可以使用Markdown和Markdown到HTML转换。