在emacs中键入某些文本字符串时自动替换它们

在emacs中键入某些文本字符串时自动替换它们,emacs,Emacs,有一个小的细微差别一直困扰着我,那就是我经常键入\include,而不是\include。如果不明显,我会编程很多C和C++。这一拼写错误破坏了无数次构建,并消耗了本该花在喝咖啡或冲浪上的时间。当然,emacs可以在我打字时帮我纠正错误(当然,只在cc模式下)。但是怎么做呢 谷歌和搜索stackoverflow没有提供任何答案。您可以在以下情况下使用此选项:输入“包含”后,执行C-x a i g包含RET,从那时起,每次键入“包含”,它都会自动更改为“包含”。如果您希望abbrev是某个模式的本

有一个小的细微差别一直困扰着我,那就是我经常键入
\include
,而不是
\include
。如果不明显,我会编程很多C和C++。这一拼写错误破坏了无数次构建,并消耗了本该花在喝咖啡或冲浪上的时间。当然,emacs可以在我打字时帮我纠正错误(当然,只在
cc模式下)。但是怎么做呢


谷歌和搜索stackoverflow没有提供任何答案。

您可以在以下情况下使用此选项:输入“包含”后,执行
C-x a i g包含RET
,从那时起,每次键入“包含”,它都会自动更改为“包含”。如果您希望abbrev是某个模式的本地,请使用
C-xai l
而不是
C-xai g
。此外,您还可以使用
M-x edit abbrevs

编辑您的abbrevs,这听起来正是您想要的。它在后台运行一个编译器,在您键入时会高亮显示错误。

我想建议这对于
flyspell
来说可能是一个有点奇怪的应用程序,但是danlei的答案看起来更好。

如果您对一些不同的东西感兴趣,您可以将所有的小片段都写入代码段,使用YAsnippet包,然后您可以键入类似于#in的内容,点击TAB,然后它将扩展为。。。你要什么都行

一个比abbrevs更小巧、更全局的解决方案(因为你无法预测你会犯的所有错误)是使用flymake(emacs发行版附带)

Flymake在后台检查源代码,而您仍在将代码键入缓冲区。它突出显示了代码的错误(即:gcc告诉的错误)


在后台运行gcc不会比您的防病毒膨胀软件使用更多的CPU。此外,如果您有2个或更多内核,gcc可以利用并行化。它只检查语法,不编译任何东西。

我已经在各种事情上使用YAsnippet,但对于include,我发现自己键入它会更快。我对此表示怀疑。。。这似乎会浪费很多CPU时间在little bemefit上,这本身就是一个细微差别,因为每当我使用电池时,我都必须关闭它。我自己也没有发现这是一个问题,而且大多数编译器都能够重用大量的目标代码,只导致部分编译?@Jôme Radix:有人已经提到了flymake,正如我所说的,我对此表示怀疑,因为我在使用电池供电时工作很多。不过,我想这是一件值得检查的事情。