我想创建一个快速的Emacs宏(带C-x (
),每次执行时都会从迷你缓冲区获取一些用户输入。
使用场景是:
你有一个复杂的文本来改变正则表达式查询替换不会削减它的位置,并且你想要创建一个宏:
我尝试过使用
M-x eval-expression
和
(insert-text (read-from-minibuffer ">"))
但是在创建之后,宏显然(回想起来...... :))会重复相同的击键,因此不会让我有机会插入一些新文本。
可以这样做吗?
感谢您的帮助!
答案 0 :(得分:2)
使用kbd-macro-query
,通常绑定到C-x q
。具体来说,您应该使用C-u C-x q
,当您定义查询时,它会进入递归编辑模式,并允许您在迷你缓冲区提示中输入您喜欢的任何文本,但请注意,您在此处输入的文字不会是键盘宏的一部分。在您定义宏时,您需要点击<enter>
一次以结束递归编辑,然后再次点击它以将文本发送到迷你缓冲区提示符,以便您可以继续定义宏。完成宏的定义后,您可以执行它,它将在您调用kbd-macro-query
的位置停止,提示输入文本,然后点击<enter>
将按预期工作。