使用 C-c ' 编辑当前代码块。该操作会打开一个对应语言主模式的新编辑缓冲区,加载代码块内容供编辑。再次按 C-c ' 可关闭缓冲区并返回 Org 缓冲区。
C-x C-s 保存编辑缓冲区并同步到 Org 缓冲区。设置 org-edit-src-auto-save-idle-delay 可在空闲一定时间后自动保存,设置 org-edit-src-turn-on-auto-save 可启用自动保存模式,将内容另存为独立文件。
在主模式下编辑代码时,Org Src 次要模式保持激活。该模式提供以下可配置变量,更多变量可在定制组 org-edit-structure 中查看。
org-src-lang-modes ¶若存在名为 <LANG>-mode 的 Emacs 主模式(其中 <LANG> 为代码块头行中的语言标识符),编辑缓冲区将使用该主模式。若对应主模式不存在或未指定语言标识符,则回退到 Fundamental 模式。可通过该变量自定义语言标识符到主模式的映射。
org-src-window-setup ¶用于指定新建编辑缓冲区时的窗口布局。
org-src-preserve-indentation ¶默认值为 nil ,代码会自动缩进。该缩进在导出或 tangle 时生效,可能会修改行首空格与制表符。设为非 nil 时,代码保持左对齐,导出或 tangle 时不修改任何行内容,对 Python 等对空白敏感的语言非常有用。
org-src-ask-before-returning-to-edit-buffer ¶设为 nil 时,Org 直接返回编辑缓冲区,不再提示确认。默认行为会弹出确认提示。
代码块语法高亮可在显示页面上直观区分文本与代码。将 org-src-fontify-natively 设为非 nil 可在 Org 缓冲区中启用原生代码高亮,高亮规则遵循编辑该代码块所用的主模式(见上文 org-src-lang-modes )。
如需针对特定语言进一步自定义 org-block 的外观,可配置 org-src-block-faces 。以下示例为普通代码块设置深色背景,并仅为 Python 和 Emacs Lisp 代码块设置专属背景色。
(require 'color)
(set-face-attribute 'org-block nil :background
(color-darken-name
(face-attribute 'default :background) 3))
(setq org-src-block-faces '(("emacs-lisp" (:background "#EEE2FF"))
("python" (:background "#E5FFB8"))))