如何在emacs中用换行符替换正则表达式

4
我想在Emacs中的HTML文件中每个标签后面加上一个换行符。 现在我已经有了


M-x query-replace-regexp \(<[^>]*>\) --> \1\n

这段代码返回:

这将返回

invalid use of "\"

我已经尝试过使用C-x C-j,但它返回的是<html>C-x C-j<head>C-x C-j等等... 如果有人知道解决方法,那将会很有帮助 :)
3个回答

8

您可以使用C-q插入控制字符。

C-q C-j插入换行符,C-q C-i插入制表符等。

因此,不需要输入\n,只需键入C-q C-j即可。


C-q C-j 当然是用户1009013应该使用的,而不是 C-x C-j。 (无论你在哪里读到它,都是错误的。) - phils

5

不,它返回的仍然是之前的内容,但现在用q代替x。 - vrwim
1
我所说的C-q是指按下Control键再按Q键。因此,按下Control键后再按J键(无空格)应该可以正常工作。 - pfalstad
哦,原来如此:),等一下,正在尝试中... :) - vrwim
很高兴我能帮到你。请点击你的问题旁边的小复选框接受我的答案:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work - pfalstad

0
以上答案是正确的。另外需要注意的是,当尝试匹配包括换行符在内的整行时,例如^.*SOMETHING.*$,请使用C-q C-j替换$,而不是附加C-q C-j。与其他一些正则表达式方言不同,$加上换行符(C-q C-j)在emacs正则表达式中不匹配。

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