[英]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 或其他格式。 幸運的是, knitr
和rmarkdown
支持 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.