如何编写emacs命令,在当前光标位置插入带有可变字符串的文本?


12

我想编写一个elisp emacs命令,该命令在当前光标位置插入一个包含可变部分的固定字符串:

\label{$STRING} \index{\nameref{$STRING}}

该命令应在哪里查询$STRING并插入整个文本。

Answers:


12

埃利斯普

这是一个简单的elisp函数:

(defun labelnameref (string)
  "Insert \label{ARG} \index{\nameref{ARG}} at point"
  (interactive "sString for \\label and \\nameref: ")
  (insert "\\label{" string "} \\index{\\nameref{" string "}}"))

此函数在迷你缓冲区中查询字符串,然后将其全部插入。要使用它,您可以将其放在.emacs中,然后通过调用它M-x labelnameref或将其绑定到键。

YAS片段

如果要使用许多相似的结构,将它们编写为yasnippets可能会更容易。使用YASnippet,您可以轻松创建具有上述类似行为的代码段。例如,您可以使用以下命令(如果您要对其进行键绑定,则用适当的键绑定替换“ keybinding”):

# -*- mode: snippet -*-
# name: foo
# key: foo
# binding: "keybinding"
# --
\label{$1} \index{\nameref{$1}}

这样,您可以编写foo,然后Tab直接按将其扩展为\label{$1} \index{\nameref{$1}}并查询$1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.