如何在emacs缩写模式下用非反斜杠字符串替换string



我的问题的动机是在emacs中编写TeX,但与TeX系统本身无关。

我的目标是在emacs中设置缩写,用它们的unicode字符替换一些(TeX)宏,例如当我在emacs键入TeX时,用α自动替换\alpha。

我计划使用缩写系统来实现这一点。虽然以下缩写可以正常工作(用\test代替test):

("test" "\test" nil 0)

可以做我想做的事情的缩写,即:

("\alpha" "A" nil 0)

("\\beta" "B" nil 0)

当我键入\alpha或\beta时没有应用。

(我可以通过替换"alpha"本身并删除前面的一个字符来避开这一点,但我希望保留键入不带反斜杠的alpha的选项,并且不应用此缩写规则。)

将\alpha替换为α的缩写的正确形式是什么?

您需要更改缩写表的属性:regexp

(abbrev-table-put <your-abbrev-table> :regexp "\(\\[a-z0-9@]+\)")

唯一的问题是,在向后匹配的regexp中,开头不能有可选字符。因此,要么您更改的语法类别(但不需要对缩写表进行任何特殊处理),要么您必须选择此表中的所有缩写都以反斜杠或不以反斜杠开头。

但是为什么不使用输入法来插入unicode字符呢?

这已经存在。使用函数set-input-method并选择TeX

最新更新