Emacs 正则表达式:反向引用不包含任何内容

Emacs 正则表达式:反向引用不包含任何内容

最近我从 Sublime 切换到了 Evil 模式的 Emacs。配置后,我试图有效地使用它,但我找不到在 Emacs 中使用反向引用的方法。手册上说我必须使用 \#,所以我使用 \1,但它总是空的(也试过 0,但 Emacs 不接受它)。

例如我想在单词 Lorem 后面添加括号:

Lorem ipsum dolor sit amet

因此输入、、、、、之后,<C-M-%>我得到了以下信息:Lorem<RET>(\1)<RET><y>

() ipsum dolor sit amet

在 Sublime 中我将使用Loremas find 和($0)as replace 来获得这个:

(Lorem) ipsum dolor sit amet

我也试过视觉替代类固醇但它有相同的行为。

答案1

您应该使用替换(\&)而不是(\1)\1代表\(...\)正则表达式中的第一组。

使用 Mx describe-key CM-% 可获得的帮助中对此进行了描述:

在 中TO-STRING\&代表与 整个 匹配的内容REGEXP,而\N(其中 N 是数字) 代表与\(...\)REGEXP 中的第 N 个(从 1 开始)匹配的内容。\(...\)组从 1 开始计数。

相关内容