如何定义一个Emacs命令,使用`replace-string`替换特定字符串

6
在Emacs中,我正在处理一个文本文档,将Unicode纯文本转换为LaTeX。
我想运行几组正则表达式,例如:
M-x replace-string ± RET \pm RET
M-x replace-string µ RET  \textmu 

我该如何保存这些正则表达式,以便我可以重复运行它们?

谢谢。


我不知道这里的完整情况,但你是否考虑过切换到支持Unicode的TeX引擎?我发现XeLaTeX是一个很好的替代方案。 - zdav
我一直在使用xelatex,但它们仍然没有显示出来。例如,我尝试渲染± is $\pm$但第一个没有显示出来。 - stevejb
你使用的是什么字体?可能只有你的数学字体具有±符号。我尝试了Minion Pro,以Unicode输入正常工作。 - zdav
2个回答

4

我通常喜欢编写自定义命令,这里是你的第一个替换命令:

(defun replace-plus-minus ()
  (interactive)
  (replace-string "±" "\\pm" nil (point-min) (point-max)))

除此之外,您还可以使用键盘宏。请查看维基文档

基本上,您需要执行:

C-x ( M-x replace-string ± RET \pm RET C-x )

然后你可以给它命名,并将其保存到你的.emacs文件中:

M-x name-last-kbd-macro
M-x insert-kbd-macro

谢谢。我很感激自定义命令的使用说明。我在宏录制方面遇到的问题是,我不确定如何使用键盘输入±字符。我只是从其他地方粘贴它。而且,从其他地方粘贴会破坏宏的录制,或者至少使其不能按照我想要的方式执行。 - stevejb
粘贴应该能够正常工作,只要Emacs接收到“粘贴”的字符,而不是“粘贴这个”命令字符(或鼠标点击)。如何实现取决于您的环境(但在shell中运行“emacs -nw”可能会更容易)。 - phils
或者更简单的方法是,在录制宏时只需输入任何占位符字符,然后键入 C-x C-k e RET RET 来编辑宏,并将占位符更改为正确的字符。在编辑器中,您不必受到录制时的限制,因此可以愉快地粘贴或复制内容。 - phils

0

你有尝试过创建一个吗?

一旦你创建了一个宏,你也可以将它保存到你的 .emacs 文件中。此外,你还可以运行 M-x replace-string 然后按两次回车键,它会执行你最后一条命令。


谢谢。我确实尝试过使用宏,但请参考我对另一个答案的评论,了解为什么那不起作用。 - stevejb
你可能需要确保文件支持Unicode:http://www.emacswiki.org/emacs/UnicodeEncodingFind。然后找到正确的Emacs键组合以获取该字符(或者只需粘贴即可)。您还可以使用临时字符运行宏,使用上述方法将其保存到bash中,然后修改宏(一旦保存,它将位于您的.emacs文件底部)。 - Mauvis Ledford

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接