我想编写一个 elisp emacs 命令,在当前光标位置插入一个包含变量部分的固定字符串:
\label{$STRING} \index{\nameref{$STRING}}
该命令应该查询$STRING
并插入整个文本。
答案1
埃利斯普
这是一个简单的 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
或将其绑定到某个键来调用它。
YASnippet
如果你想使用许多类似的结构,将它们编写为 yasnippet 可能会更容易。YASnippet您可以轻松创建具有与上述类似行为的代码片段。例如,您可以使用以下内容(如果您想要为其设置键绑定,则必须将“键绑定”替换为适当的键绑定):
# -*- mode: snippet -*-
# name: foo
# key: foo
# binding: "keybinding"
# --
\label{$1} \index{\nameref{$1}}
通过此操作,您可以写入 foo 并Tab直接按 将其扩展为\label{$1} \index{\nameref{$1}}
并查询$1
。