繁体   English   中英

Emacs - 如何在 org-mode 源代码块中包装选择?

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

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

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

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

所以我想做的是包装/或放置选定的内容(使用 C 空间)并将其放入组织模式的模板源代码块中(在我的例子中它主要是 elisp 代码,但我打算使用它对于其他事情也许)

我怎么能在 emacs 或 elisp 中做到这一点?

您可以尝试wrap-region 它将允许您定义要环绕选择的字符串类型。

把它放在你的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) 中有一个新的模板机制,允许您将区域包装在一个块中:以通常的方式选择区域后,您说Cc C-, s 不过,您仍然需要输入emacs-lisp部分。 这就是缺点。 优点是它足够通用,可以让您将区域包装在任何类型的块中。 在您的情况下,我认为劣势大于优势,所以我会在另一个答案中使用wrap-region方法 go ,但这个也很高兴知道。

org-mode 中有一个功能可以做到这一点。 这就像您输入<el并按 TAB 键的某种片段,< 字符在这里表示我们将使用模板,而 el 部分告诉使用哪个模板。 但是,当然,您必须先配置它。

为此,您可以将其添加到 org-mode 文件或您的 init.el 文件中:

#+begin_src emacs-lisp

;; This is needed as of Org 9.2
(require 'org-tempo)

(add-to-list `org-structure-template-alist `("sh" . "src shell"))
(add-to-list `org-structure-template-alist `("el" . "src emacs-lisp"))
(add-to-list `org-structure-template-alist `("py" . "src python"))

#+end_src

有很多方法可以使用它,它实际上比仅将其用作模板更有用,您可以 go 在此处查看文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM