Emacs - 如何在组织模式源代码块中包装选择?

Emacs - How to wrap selection in org-mode source code block?

我有一堆 elisp 和其他代码以及一些注释我想重新格式化以更有条理,我发现必须输入

#+BEGIN_SRC emacs-lisp ... #+END_SRC

一直围绕着我想要的东西,花费的时间比预期的要长一些...

所以我想做的是 wrap/or 将选定的内容(使用 C-space)放入组织模式的模板源代码块中(在我的例子中)它主要是 elisp 代码,但我可能打算将它用于其他事情)

我如何在 emacs 或 elisp 中执行此操作?

你可以试试wrap-region。它将允许您定义要环绕 selection.

的字符串类型

将其放入您的 init.el 并对其进行评估。

(wrap-region-global-mode t)
(wrap-region-add-wrapper "#+BEGIN_SRC emacs-lisp\n" "#+END_SRC" "#" 'org-mode)

然后,当您编辑 org 文件时,您可以 select 一段文本并键入 #,这将用您的字符串将其包裹起来。您可以将 # 更改为另一个将进行换行的字符。

最近的 Org 模式 (>= 9.0 IIRC) 中有一个新的 templating mechanism 允许您将区域包装在一个块中:以通常的方式选择区域后,您说 C-c C-, s.不过,您仍然需要输入 emacs-lisp 部分。这就是缺点。优点是它足够通用,可以让您将区域包裹在任何类型的块中。在你的情况下,我认为缺点超过了优点,所以我会在另一个答案中使用 wrap-region 方法,但是这个也很高兴知道。