emacs - 如何在 Emacs 中实时预览 Markdown?

标签 emacs markdown

我正在使用 spacemacs,我正在寻找一个插件来实时预览 Markdown。我找到了一个插件markdown-preview-eww ,但它需要一个 gem,我不想安装 ruby​​。

markdown-mode只是将md导出为html,并且无法实时预览markdown。另外,我不喜欢在未经我同意的情况下生成任何文件。

那么,有没有可以在 emacs 中预览 markdown 的插件呢?或者每个人都在 emacs 中使用 org-mode 而不是 markdown 吗?

最佳答案

这里列出了一些解决方案:http://wikemacs.org/wiki/Markdown#Live_preview_as_you_type .

纯粹的 Emacs(接近)解决方案和简单的解决方案,不需要 Python 或 Nodejs 的额外库,是不耐烦模式

不耐烦模式

它被设计为与 html 一起使用,但文档给出了一个技巧,使其可以与 markdown 一起使用。它也像一个魅力一样工作,但需要一个配置步骤:

  • 假设您已将 package.el 配置为使用 melpa,则使用 M-x package-install RET imeptic-mode RET 安装 imeptic-mode存储库。
  • 使用 M-x httpd-start 启动 emacs 的 Web 服务器。
  • 在您有兴趣进行实时预览的缓冲区中启动不耐烦模式:M-x不耐烦模式
  • 打开浏览器访问 localhost:8080/imp。您将看到启用该模式的缓冲区列表。单击其中一个:您会看到缓冲区的实时渲染。

要启用 Markdown 转换,我们遵循 wikemacs:

  • 在某处定义此 elisp 函数,例如在初始化文件中:

     <!-- language: lang-lisp -->
    
      (defun markdown-html (buffer)
        (princ (with-current-buffer buffer
          (format "<!DOCTYPE html><html><title>Impatient Markdown</title><xmp theme=\"united\" style=\"display:none;\"> %s  </xmp><script src=\"http://ndossougbe.github.io/strapdown/dist/strapdown.js\"></script></html>" (buffer-substring-no-properties (point-min) (point-max))))
        (current-buffer)))
    
  • 告诉不耐烦模式使用它:M-x imp-set-user-filter RET markdown-html RET

  • 返回您的浏览器,它可以工作了!

livedown-mode(使用 npm)

https://github.com/shime/emacs-livedown需要 livedown npm 包。另外,这个 emacs 包不在 MELPA 中,你必须在本地克隆它。否则,它是一个很好的轻量级解决方案。

Vmd 模式(npm、Electron)

另一个解决方案是 vmd-mode ,它与 vmd 节点包一起使用。这不是最重量级的解决方案:vmd 基于 Electron (!)。

Grip-mode(Python、Github 的速率限制)

另一个是grip-mode ,依赖于 Python 包:

pip install --user grip

M-x package-install grip-mode

然后在 Markdown 缓冲区中运行 M-x grant-mode 。它会在您的浏览器中打开一个新选项卡。

不幸的是,在撰写本文时,它受到 Github 速率限制的限制。事实上,为了像 Github 一样精确地呈现内容,它调用了它的 API。它不会在本地呈现内容。因此,我们每小时只能调用 60 个电话,这个数字非常少。请参阅此问题:https://github.com/joeyespo/grip/issues/35

关于emacs - 如何在 Emacs 中实时预览 Markdown?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36183071/

相关文章:

emacs - 将一个 session 的硬换行设置为 68 列

macos - emacsclient 中的非拉丁语输入

Emacs 仅将制表符停止列表设置为本地缓冲区?

python - 将 Markdown 渲染为 HTML,同时保留标题、换行符等?

windows - 从 emacs 运行时 svn 版本控制身份验证失败

emacs - 在 emacs 批处理模式下运行 `org-export-as-html'

node.js - 使用 express 和 marked 返回呈现的 Markdown

基于 Sphinx 的文档的 Markdown 输出

markdown - 在 Markdown 中,如何格式化引用中的斜体文本?

python - Slack Bot - Python slack 发送 markdown 消息