Emacs里如何把某个字符替换为“换行”?
Ping Zhou, 2022-09-04
Emacs 的 query-replace
是一个很常用的查找替换命令(快捷键 M-%
)。这个命令会提示你输入要查找的字符串,再输入要替换的字符串,然后就会从当前位置逐个查找和确认是否替换。
但是,如果我想要把某个字符替换为特殊字符,例如想把字符“;”替换为“换行”,就不能直接输入了,因为如果你在第二步输入了回车,它会认为你想要把查找的字符串替换为空字符串(相当于查找+删除)。怎么办呢?
查了一下,有这样几个办法。
一是在输入要替换的字符串时,输入 C-q C-j
,然后回车。
这里的 C-q
表示 quoted-insert
,意思是告诉 Emacs 输入后面的控制字符。而 C-j
代表的是 ASCII 码 0x0a,也就是 newline。然后按下回车,就会用 ASCII 码 0x0a 来替换字符串“;”。
还有种方法,就是在 C-q
之后输入 ASCII 码的八进制数,例如 0x0a 的八进制数就是 12 。
另一种办法可能更直观,就是用 C-k
去删除一个空行,把空行加入到 kill-ring 里,然后在输入要替换的字符串时,用 C-y
把它粘贴进来。这个就有点类似图形界面编辑器(例如VSCode)里的操作了。