簡體   English   中英

如何在 emacs 中使用 org-edit-special 編輯 Markdown 代碼塊

[英]How to edit a markdown code block using org-edit-special in emacs

我想像org-edit-special那樣從 RMarkdown 文件中編輯我的 R 塊。 我發現來自jonathan leech-pepin 的generic-edit-special對 html 文件中的 js、css 和 ruby​​ 做了類似的事情。 我想我可以按照作者的建議調整它以使其適用於我的案例,但即使以原始形式我也無法使其工作。

我能夠從帶有 js 腳本塊的 html 文件中運行函數ges/org-edit-special ,但什么也沒發生(沒有錯誤,也沒有新的緩沖區)。 我使用此處內部腳本示例作為此測試的 html 文件。

這是我為測試而制作的 init.el:

(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
(setq package-list
    '(js2))

; activate all the packages
(package-initialize)
(load "~/.emacs.d/lisp/generic-edit-special")

; Org setup (telling org-mode to edit javascript with js2)
(push (cons "javascript" 'js2) org-src-lang-modes)
;; For html-mode

(require 'generic-edit-special)
(eval-after-load "sgml-mode" '(define-key sgml-mode-map [(control c) ?'] 'ges/org-edit-special))

我對 emacs 很陌生,通常使用 spacemacs,所以我想這只是我無法正確配置,但我現在顯然迷路了。

我也知道polymode編輯RMarkdown文件,但不喜歡使用它。 我更喜歡“外部代碼緩沖區”方法。 而且我也不能使用純組織模式,因為我必須與不使用 Emacs 的人合作。

和你一樣,我更喜歡“外部代碼緩沖區”,但經常需要共享 .Rmd 或其他格式。 幸運的是, knitrrmarkdown支持 R 代碼緩沖區中的標記。 有關“旋轉”您的 R 代碼的(過時的)介紹,請參見 此處

無論如何,格式基本上只是在##'注釋(帶引號的雙哈希)之后降價,並帶有一些 yaml 標頭信息,如 Rmd 文件,例如。 以下可以作為純 R 代碼運行,

##' ---
##' title: "Foo"
##' output:
##'   html_document:
##'     toc: TRUE
##' author: Me
##' ---

##- r setup, include=FALSE -------------------------------------------------
library(ggplot2)
knitr::opts_chunk$set(echo = TRUE)
## /* end r setup */

##' # A header
##' a code block
##- blk1 -------------------------------------------------------------------
dat <- data.frame(x=sample(10, 10), y=runif(10))
## /* end blk1 */

##' # Another section
##' A code block w/ image
##- img,  fig.width=9, fig.height=4 ----------------------------------------
plot(y ~ x, data=dat, type='l')
## /* end sem */

##' # Next section
##' etc.

並使用knitr::spin("<filename.R>", knit=FALSE)轉換為 Rmd,或使用rmarkdown::render("<file.R>")渲染為 HTML(如上所述rmarkdown::render("<file.R>")

就個人而言,我會使用 Makefile 簡化文件生成(確保這些是選項卡),例如。 渲染和創建 Rmd,

foo.html: foo.R
    rscript -e "knitr::spin(\"$^\", knit=FALSE); \
    rmarkdown::render(\"$^\", \"all\")"

或者,可以從 Emacs 使用這些命令進行編譯等。

我剛剛發現 markdown-mode 中的markdown-edit-code-block功能正是我想要的。

我將 .Rmd 文件的主要模式設置為markdown-mode ,並在 R 塊中執行它會打開一個間接緩沖區,其中ess-r-mode作為主要模式。 (在 doom emacs 中,默認鍵綁定是, '

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM