簡體   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