Emacs模式适用于Stack Overflow的Markdown

96

我在Emacs中使用Org-mode来处理所有的技术文档。我想使用Emacs准备我在Stack Overflow上提出的问题。是否有一个Emacs模式,甚至更好的是一个扩展程序,可以处理Stack Overflow格式的Org-mode?理想情况下,它应该包括所有格式选项,支持在Stack Overflow问题/评论缓冲区中使用的markdown语法。


阅读此问题的人可能会对Emacs的SX - Stack Exchange!感兴趣。 - Sean Allred
5个回答

145

将Emacs与Stack Overflow集成

如前所述,您可以使用markdown-mode。要将markdown-mode与Stack Overflow集成,您可以使用Firefox插件It's All Text,该插件允许您使用外部编辑器编辑文本区域。以下是设置方法:

  1. 安装markdown-mode。如果您使用Debian或Ubuntu,则可以通过下面的命令进行安装:

    sudo apt-get install emacs-goodies-el
    

    如果你使用的是emacs24 (或者在emacs23上安装了package.el),并且有MarmaladeMelpa,那么你可以使用以下命令进行安装:

    M-x package-install RET markdown-mode
    
  2. 安装It's All Text

  3. 将It's All Text的偏好设置设为Emacs。你可以将其设置为可执行文件(例如/usr/bin/emacs)或者emacsclient
  4. 将以下内容添加到你的.emacs文件中,以启用markdown-mode来编辑Stack Overflow和Stack Exchange文本区域:

  5. ;; 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))
    
  6. 按下文本区域右下方的蓝色编辑按钮,即可通过emacs编辑它。如下截图所示,“蓝色编辑”按钮:

    蓝色编辑按钮的截图

    下面这张截图显示了一个Markdown模式的Emacs缓冲区正在编辑这篇帖子:

    一个Markdown模式的Emacs缓冲区正在编辑这篇帖子的截图

  7. 在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中使用markdown-mode

你可以通过使用Org-mode的特性处理源代码来在Org-mode中使用markdown-mode。这样,你就可以将Markdown块包含在Org-mode缓冲区中,并通过markdown-mode进行编辑。你可以按照以下步骤操作:

  1. 在Org-mode缓冲区中输入<s然后换行并按下 Tab。这将产生:

    #+begin_src 
    
    #+end_src
    
  2. #+begin_src后输入 markdown,这将使得语法高亮生效:

    #+begin_src markdown
    
    #+end_src
    
  3. 在源代码块内(位于#+begin_src markdown#+end_src之间),按下C-c '使用markdown-mode编辑源代码块。

  4. 在markdown-mode中编辑源代码块。

  5. 按下C-c '返回到Org-mode缓冲区并插入编辑内容。这可能看起来像以下截图所示:

    一个Org-mode缓冲区正在编辑此帖子的一段markdown代码块


2
如果您已安装了as-external(或安装了nxhtml-mode,该模式会安装as-external),它可能会完全忽略您对auto-mode-alist的调整。您想要修改的变量是as-external-alist - quodlibetor
@quodlibetor 我需要以完全相同的方式修改 as-external-alist 吗? - N.N.
@N.N. 这几乎完全相同,但你需要将内部单元格中的句点去掉。我有这个并且对我有效:(add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+" markdown-mode)) - quodlibetor
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Sean Allred
1
Its All Text已不再受支持,也无法在最新版本的Firefox(57+)上运行。 - Iain
我们可以在充当 #+begin_src python 的 markdown 块中使用 `python``` 吗? - alper

14

但是[可以将markdown-mode直接与Stack Overflow集成,也可以将其与Org-mode一起使用](https://dev59.com/2mkv5IYBdhLWcg3wvDTq#10386560)。 - N.N.
我找到了一个基本的 org-markdown 导出器:https://github.com/alexhenning/ORGMODE-Markdown - Nate Parsons

4

@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))

此外,要使终端emacs中的edit-server正常工作,我需要禁用edit-server-new-frame选项。

1

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.

或者,您可以保存文件并在命令行中进行转换。


0

使用Chrome也很容易

这不仅是一个答案,更是我使用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)))

Gmail消息支持

请注意,在上述设置中,我正在使用org-mode来处理Gmail消息。仍需要进行一些工作,但只要稍加努力,就可以使用org-mime从您的org结构化文本生成HTML,并起草您的Gmail消息。您也可以使用Markdown和Markdown到HTML转换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接