Anyone would agree that typing #+BEGIN_SRC ... #+END_SRC
blocks manually feels
strange.
In order to make life easier, some people implement helpers to insert these
blocks. For example, Chris Done has org-begin-template
function in his
configs. Other people use yatemplate to create generic or specific templates for
blocks.
But what is most fascinating, is that org-mode
bundles with templates for some
structural elements like these blocks. And instead of copy-pasting solutions
into your .emacs
file, take a look at Structure Templates.
With just a few keystrokes, it is possible to insert empty structural blocks,
such as #+BEGIN_SRC’ … ‘#+END_SRC
, or to wrap existing text in such a block.
Just type C-c C-,
(org-insert-structure-template
) to prompt for a type of
block structure, and insert the block at point. If the region is active, it is
wrapped in the block. Available structure types are defined in
org-structure-template-alist
, see the docstring for adding or changing values.
You can also use an old Easy Template system, which is disabled by default in
Org mode 9.2 and upper. One can turn it back by enabling org-tempo
module
either by adding it to org-modules
variable or by (require 'org-tempo)
.
With this feature, you type <
followed by template selector, then hit TAB
and voilà. For source blocks, it’s just <s<TAB>
.
Just for reference, here is a list of available templates and their corresponding selectors. Please note that this table might become out of date, so it’s better to refer to the official documentation.
Key | Template |
---|---|
s |
#+BEGIN_SRC ... #+END_SRC |
e |
#+BEGIN_EXAMPLE ... #+END_EXAMPLE |
q |
#+BEGIN_QUOTE ... #+END_QUOTE |
v |
#+BEGIN_VERSE ... #+END_VERSE |
c |
#+BEGIN_CENTER ... #+END_CENTER |
l |
#+BEGIN_LaTeX ... #+END_LaTeX |
L |
#+LaTeX: |
h |
#+BEGIN_HTML ... #+END_HTML |
H |
#+HTML: |
a |
#+BEGIN_ASCII ... #+END_ASCII |
A |
#+ASCII: |
i |
#+INDEX: line |
I |
#+INCLUDE: line |
That’s it.