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

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

我想编写一个 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

相关内容